20210608のMySQLに関する記事は8件です。

Sequel ProでインポートしたらMysql2::Error: Incorrect string value

Sequel Pro便利です。 視覚的にデータベースを確認できるのは大きい。 そしてCSVでもインポート可能で、直感的。 インポート方法はこちらから Sequel Proを使ったMySQLのテーブルデータ追加方法 注意点はidも入力しなきゃいけないというところですかね。 あとは日付の項目の型ですかね。 私の場合 yyyy-mm-dd hhss という形でした。  発生したエラーはMysql2::Error: Incorrect string value 今回の場合はarchivesというテーブルでarchivetitleでエラーが発生 確認したところ、文字化けしているようでしたが、原因は絵文字。 【Short video】?NENE's GREETING?【桃鈴ねね/ホロライブ】 という具合でガンガン絵文字が入っているのでエラーが発生。 rails db:drop で一度データベースを削除 database.ymlを修正 default: &default adapter: mysql2 charset: utf8mb4 //ここを追加 encoding: utf8mb4 //ここがutf8になっていた pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock rails db:create にて再度、データベース構築。 あとは一番最初の方法でインポート可能。 参考文献
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Herokuにデプロイするお作法

本記事について ・Railsのアプリをデプロイする人向けの記事です。(他の言語でも可) ・実際にデプロイするときに詰まったことを含めて書きたいと思います。 前提 ・herokuのアカウントを持っている。 ・herokuをローカルまたはCloud9等にインストールしている。 ・Railsのプロジェクトがある。(完成してなくても良い) ・MySQLを使用している。 手順 1.herokuにログイン $ heroku login 2.作成したRailsプロジェクトのディレクトリに移動し、herokuにアプリケーションを作成 $ heroku apps:create <アプリの名前> ・この時<アプリの名前>は一意の名前するようにしましょう。 ・一意の名前とは世界でたった一つだけの名前のことです。 3.herokuのリモートリポジトリを確認 $ git remote -v ・上記コマンドを実行すると以下のように出力される。   heroku https://git.heroku.com/<アプリの名前>.git (fetch)   heroku https://git.heroku.com/<アプリの名前>.git (push)   origin git@github.com:shou1012/<アプリの名前>.git (fetch)   origin git@github.com:shou1012/<アプリの名前>.git (push) 4.リモートリポジトリherokuが作成されてることを確認 $ git remote heroku origin (heroku、またはheroku originが出ていたらOK) 5.DBをMySQLに変更する ・cleardbのigniteプランにする変更コマンド $ heroku addons:create cleardb:ignite *エラー注意* 以下のようなエラーはHerokuアカウントでクレジットカード情報の登録が必要です。 ▸ Please verify your account to install this add-on plan (please enter a credit card) For more ▸ information, see https://devcenter.heroku.com/categories/billing Verify now at ▸ https://heroku.com/verify 「Igniteプラン」は無料のためこの設定だけで料金が発生することはないです。 ・ClearDBのURL確認 以下のコマンドで、ClearDBのURLが確認できます。 $ heroku config === <アプリの名前> Config Vars CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=tru ・環境変数の設定をする。 上記コマンドで表示されたそれぞれの値を変数に設定する。 $ heroku config:add DB_NAME='<データベース名>’ $ heroku config:add DB_USERNAME='<ユーザー名>’ $ heroku config:add DB_PASSWORD='<パスワード>’ $ heroku config:add DB_HOSTNAME='<ホスト名>’ $ heroku config:add DB_PORT=’3306′ $ heroku config:add DATABASE_URL=’mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true’ ・設定内容を確認する。 $ heroku config === <アプリの名前> Config Vars CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true DATABASE_URL: mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true DB_HOSTNAME: <ホスト名> DB_NAME: <データベース名> DB_PASSWORD: <パスワード>DB_PORT: 3306DB_USERNAME: <ユーザー名> ・Railsのプロジェクトのために準備をする config/environments/production.rb config.assets.compile = true config.assets.initialize_on_precompile=false rootへのルーティング作成はHerokuでアプリケーションにアクセスした時に最初に開くページをRails側で設定してくれという意味。 6.Herokuへデプロイ ・ローカルリポジトリをherokuへpush $ git push heroku master ・herokuのDBのmigrate $ heroku rake db:migrate ・アプリケーションを開く $ heroku open 引用 https://mabeblog.com/heroku-rails-mysql
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLのバージョンアップ(5.1.73 → 5.7.33)

環境 CentOS6 MySQL 5.1.73 前置き CentOS6上でMySQLのバージョンを上げる対応を行いましたので備忘録として残します。 MySQLを5.1系から5.7系へ上げるには一度、5.6系へバージョンアップを行うことで、5.7系へバージョンアップすることができます。いきなり5.7系へのバージョンアップは不可能なので段階を踏みます。 ダンプ # バージョンアップ後にリストアするので $ mysqldump -u root --all-databases --single-transaction > dump-data.sql まず5.6にあげる $ mysql --version # 現在のバージョン確認 $ sudo -s # 権限昇格 $ service mysqld stop # サービスを落とす $ yum remove mysql* # mysql関係のリポジトリをアンインストールします # MySQL5.6をインストールします $ wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm $ yum -y install mysql-community-release-el6-5.noarch.rpm $ yum-config-manager --disable mysql55-community $ yum-config-manager --enable mysql56-community $ yum -y install yum-utils $ yum install mysql mysql-devel mysql-server mysql-utilities $ service mysqld start # サービスを起動 $ mysql_upgrade -u root # バージョンアップでテーブルに非互換性が生まれた場合に修復してくれる $ mysql --version # 5.6系になっている 5.7.33にあげる $ service mysqld stop # サービスを落とす $ yum remove mysql* # mysql関係のリポジトリをアンインストールします $ rpm -e mysql-community-release-el6-5.noarch # 5.6のパッケージをアンインストール # MySQL5.7をインストールします $ wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm $ yum -y install mysql57-community-release-el7-11.noarch.rpm $ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-1.el6.x86_64.rpm-$bundle.tar $ tar -xvf mysql-5.7.33-1.el6.x86_64.rpm-bundle.tar $ yum localupdate mysql-community-server-5.7.33-1.el6.x86_64.rpm \ mysql-community-client-5.7.33-1.el6.x86_64.rpm \ mysql-community-common-5.7.33-1.el6.x86_64.rpm \ mysql-community-devel-5.7.33-1.el6.x86_64.rpm \ mysql-community-libs-5.7.33-1.el6.x86_64.rpm $ service mysqld start # サービスを起動 $ mysql_upgrade -u root # バージョンアップでテーブルに非互換性が生まれた場合に修復してくれる $ service mysqld restart # 念の為サービスをリスタート $ mysql --version # 5.7.33になっている リストア $ mysql -u root < dump-data.sql # データをリストア $ mysql_upgrade -u root --force # 非互換性の修復 $ service mysqld restart # サービスをリスタート まとめ 何度か試行錯誤してこの形に行き着きました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

さくらvps独自ドメイン設定備忘録

自分でサービスを公開する際URLを「サービス名.com」にしたかったので以下のサイトたちを参考にして独自ドメイン取得、セッティングしました。自分の行った設定通りに記事を残したかったのですが、ログが残っていないので参考になるURLの記載。 完全に自分用の備忘録です。 自分はドメインもサーバーもさくらインターネットなので簡単でした。他の会社でドメインを取得した場合の手順は分かりません、、 ~さくらインターネットで独自ドメイン取得サイト~ https://domain.sakura.ad.jp/?utm_source=vps&utm_medium=cp ~さくらインターネットで取得した独自ドメインを自身のサーバーにセットする方法参考~ https://webkaru.net/vps/sakura-domain-setting/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

さくらvps独自ドメイン設定https構築の備忘録

自分でサービスを公開する際URLを「https://サービス名.com」にしたかったので以下のサイトたちを参考にして独自ドメイン取得、セッティングしました。自分の行った設定通りに記事を残したかったのですが、ログが残っていないので参考になるURLの記載。 https通信の構築もしたかったのですがなかなかにハードでした、、 その時にかなり助けとなったサイトや記事を貼ります。 完全に自分用の備忘録です。 レンタルサーバーからwebサービスの公開をした者からするとvpsでの環境設定は結構大変だと感じましたし、そう感じてる方もいらっしゃると思うので是非参考にしてみてはどうでしょう。https通信に関してはレンタルサーバーだと自身でSSL証明書を準備する必要がないので安易でした。 自分はドメインもサーバーもさくらインターネットなので簡単でした。他の会社でドメインを取得した場合の手順は分かりません、、 自身の利用ツール サーバー:さくらのVPS ドメイン:さくらインターネット SSL証明書:さくらのSSL 参考記事一覧 ~さくらインターネットで独自ドメイン取得サイト~ https://domain.sakura.ad.jp/?utm_source=vps&utm_medium=cp ~さくらインターネットで取得した独自ドメインを自身のサーバーにセットする方法参考~ https://webkaru.net/vps/sakura-domain-setting/ ~自分のサービスをhttps通信にするために~ https://qiita.com/yoshizaki_91/items/e6f39a5bfb99900b44b2 https://webdirector-blog.com/c_3/p_35/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[SQL] MySQLでSQLを学ぶ~DDL編①~

はじめに 前回に引き続きデータベース関連です。 ここからはMySQLを使ってSQLを学んでいきたいと思います。よろしくお願いします。 なお、これはあくまでSQLを学びアウトプットをすることを目的としており、私がMySQLを使ってきたのでMySQLで作業を行なっていきます。PCへMySQLを導入する方法や、設定方法は記載しておりません。 Railsを使っているとデータベース作成する時はコマンドでrails db:createを実行し作成します。シークエルプロというアプリを使いGUI操作をすることもありました。 しかしながら、GUIではできない操作やコマンドが用意されていない操作を行う場合はSQLを使う必要があります。 ターミナルでMySQLを扱う ターミナルでMySQLを使うにはログインする必要があります。 まずはホームディレクトリに自分がいることを確認し下記のコマンドを実行します。 ターミナル # ホームディレクトリに戻る % cd # MySQLに接続 % mysql -u root -u rootというコマンドはオプションで「ルート」でログインするという意味になります。 このルートはMySQLで元々用意されているユーザーのことです。このユーザにはパスワードはありません。 ターミナル Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 744 Server version: 5.6.51 Homebrew Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> これで準備完了です。 DDL(Data Definition Language) 前回SQLは大きく分けて三つの命令に分類できると説明しました。 その中で今回はデータを定義するDDLを詳しく見ていきます。 DDLの主な命令文 命令 機能 CREATE データベースやテーブルの作成 ALTER データベースやテーブルの更新 DROP データベースやテーブルの削除 CREATE文 まずはデータベースやテーブルを作成できるSQL文CREATE文です。 いつもRailsでは、 rails db:createというコマンドでデータベースを作成していましたが、SQLを使ってデータベースを作成してみます。 データベースを作るにはCREATE DATABASE文を実行します。 実際実行する時はデータベース名も必要です。 ターミナル mysql> CREATE DATABASE 《データベース名》; 実はSQL文は小文字でも動いてくれるそうなのですが、SQL文と他の文字列が混ざると読みづらくなるので、一般的には大文字で記述するそうです。 あと、文の最後には必ずセミコロンをつける必要があります。 今回は「sqltest」という名前でデータベースを実際に作ってみます。 ターミナル mysql> CREATE DATABASE sqltest; Query OK, 1 row affected (0.02 sec) 1行目を実行して、2行目が表示されたら成功です。データベースの作成ができました。 ちゃんとできているかデータベースの存在を確認するためにSHOW文を使います。 SHOW文 SHOW文はデータベースやテーブルを一覧表示できるSQL文です。 作成されているデータベースを一覧で表示させるにはSHOW DATABASES文を実行します。 個人的には、DATABASESって複数形だ、気をつけよって思いました ターミナル mysql> SHOW DATABASES; を実行すると ターミナル mysql> SHOW DATABASES; +------------------------+ | Database | +------------------------+ | 省略 | | sqltest | | 省略 | +------------------------+ 65 rows in set (0.10 sec) 今まで作成してきたデータベースも含めたくさん出てきたかと思います。 DROP文 DROP文は、データベースやテーブルを削除できるSQL文です。 既に存在しているデータベースを削除するにはDROP DATABASE文を実行します。 削除したいデータベース名も必要です。 先ほど作成したsqltestを削除します。 ターミナル mysql> DROP DATABASE sqltest; Query OK, 0 rows affected (0.03 sec) 上記のように表示されれば成功です。SHOW文でちゃんと消されているか確認してもいいでしょう。 とりあえず今回はここまでとします。 最後に 今回はデータベースの作成と表示、削除の簡単な操作を行いました。 次回はここからデータベースの中にテーブルを作成し、カラムを作成したりといった作業をSQLでできるように学習します。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQL PDOに接続するときのメモ

はじめに はじめは勉強のためにMDB2を先にやろうかと思ったら、 いろいろと情報がないこともあり、時間もなく断念。 PDOならなんとかなるかと思うのと、PDOで試験出るならやっぱりやらないとあかんかなと 思ったので、つないでみることにした コマンドでMYSQLに入る https://qiita.com/fuwamaki/items/194c2a82bd6865f26045 これを参考にしました。 なぜかというと、まずはMDB2から入ろうかと思ってここからやっていたのがきっかけ。 で、すでに入ったことがあるので、 コマンドラインから mysql -u root -h localhost -p ここでログイン SHOW DATABASE ここでデータベースを確認して、すでに作った「test」があるのを確認 SELECT User,Host FROM mysql.user; 次にユーザーについても確認 rootがあったので、パスワードを設定して退出 create user 'root' identified by '******'; quit; ※*はもちろんパスワードを入れる create user 'pdouser' identified by '******'; SELECT user, host FROM mysql.user; flush privileges; あたらしくユーザーとパスを作って ユーザー一覧にあるのを確認して 反映。 なぜかhostが%になってた。 GRANT ALL PRIVILEGES ON test.* to 'atsublue'@'localhost'; ここでなぜかERROR 1410 (42000)がでて、できない。 ちなみにこれはシンタックスエラーがあるんじゃないかと言われている。 MAMPのPHPは5.7.32で、ERROR 1410 (42000)が出るはずはない。 MYSQL8ならば、下記の様な方法ができるが。 https://qiita.com/yamateion/items/5509484aaf1a02e9cc57 そこではたと気づいた。 MAMPからmyPHPAdominに行ってDBがあるのかどうか調べようと思った。 入り方は下記 https://qiita.com/mako0104/items/cb677d04922a3d9672ae すると、 DBにtestはおろか、ユーザーにpdouserが入っていない。 ここでつまった。 でやっと気づいた。 冒頭で、なぜか、MAMP内にはいらず、MySQLに入っていたことに。 それだと、前にHomeblewで入れていたMYSQLに入ってしまうことに。 あわてて、mysqlのバージョンを確認した。 やはり、8.0だった笑 https://qiita.com/rokumura7/items/b270acb9550efddd5fe5 ということで、 cd /Applications/MAMP/Library/bin/ ./mysql -u root -p ここで、パスワード入力画面が出るのだが、 私はずっと勘違いしていたせいで、MAMPのMySQLには入っていないので パスワードはrootのはずだ、と思ってこれを入れるとログインできた さてデータベースを作り、show databasesで作ったDBがあるのを確認。 下のpdotestdbはDB名で、好きなものを入れてOK create database pdotestdb; 次に、ユーザーも作り、このユーザーでDBにアクセスできるように設定 pdouserがユーザー名で、 localhostはホスト名 pdotestdbは上記で設定したDB名 mysql> create user 'pdouser'@'localhost' identified by '(好きなパスワード)'; mysql> grant all privileges on pdotestdb.* to 'pdouser'@'localhost'; ここまでうまくいった。 さて、ここでphpからPDOでmySQLにつなぐ 下のポート番号はMAMPにあったポート番号。 charsetはこれしないと文字化けになるのであったほうがいい。 index.php <?php $dsn = 'mysql:host=localhost;port:8889;dbname=pdotestdb;charset=utf8'; $DB_user = 'pdouser'; $DB_pass = '(上記で設定したパスワード)'; try{ $db = new PDO($dsn,$DB_user,$DB_pass); echo "接続成功"; } catch(PDOException $e){ echo "接続失敗" . $e->getMessage() ."<br>"; ?> 接続成功 と書かれた画面が出力され、うまくいきました! 追記 パスワードがrootのままだとセキュリティ上危ないので変更 下記のリンクを参考に ただ、quitしたあとにもとに戻るのに、また、 cd /Applications/MAMP/Library/bin/ しないといけないので面倒だ。。。 そんなときには「パスを通す」ことをやればいいらしいです。(メモ) https://webkaru.net/mysql/mamp-command-line/ 今回はテストと勉強でつないでいるだけなので、今はいいかなと思ってやっていない。 必要であれば上記を参考に。 さらに追記 上のようにやっても、接続はできても、それ以降のことができないことがあった。 そのときは、今使いたいDB を、useすれば使えるようになる。 $db=>exec('use テーブル名'); このあとに、SQL 文をつくって実行する感じ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker-composeのcomposeファイルの書き方【LAMP環境構築ベース】

Docker-composeを使って、PHPとMySQLを動かすために、LAMP環境を作成したので、そのcomposeファイルを元にdocker-composeの概要をまとめてみました。 Docker-composeとは Docker-composeとは、複数のコンテナをつなげて管理することのできるツールです。 Docker-composeを使うことで、簡単にコンテナ間の通信を行うこともできます。 Dockerイメージの作成方法やコンテナ起動時の設定などを「docker-compose.yml」に記述することで、「docker compose」コマンドでまとめて操作できるようになります。 Docker-composeは設定を全てyml形式で記述します。 そのファイルをcomposeファイルといい、ここでdocker fileでイメージをビルドして、コンテナを立ち上げる事ができます。 また、環境関数を使うことも可能です。 今回はこのdokcer-composeを使って、 mysqlとphp-apache、phpmyadminのコンテナを作り、LAMP環境を作成します。 composeファイルについて docker-compose.yml version: "3.7" services: mysql: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: "password" phpmyadmin: depends_on: - mysql image: phpmyadmin/phpmyadmin environment: PMA_HOST: mysql restart: always ports: - "8080:80" php-apache: build: ./php volumes: - ./htdocs:/var/www/html restart: always ports: - "80:80" depends_on: - mysql volumes: db_data: {} 上記のcomposeファイルを例に書き方の説明をします。 version 使用するDocker-composeバージョンを定義する記述です。 現在(2021年5月)は3系が最新のバージョンになります。 バージョンによって、Composeファイルの書き方変わります。 ここでは「3.7」を設定します。 services(サービス) 「サービス」は起動するコンテナーの設定の定義のことです。 ここに各コンテナーと、その設定を記述します。 サービスには名前をつけて複数定義可能で、各サービス間での通信を定義できます。 サービス名 サービスはservicesに定義する各サービスの名前です。 任意で決めることができます。 ここではmysqlとphpmyadmin、php-apacheの3つのサービスを定義します。 このサービスごとにコンテナが起動します。 image(イメージ) イメージはDockerのコンテナーの元になるものです。 もし指定したイメージがなければbuildするときにインストールされます。 ここではmysqlとphpmyadminでそれぞれ、「mysql:5.7」と「phpmyadmin/phpmyadmin」のイメージを使用します。 volumes(ボリューム) ボリュームにはマウントする設定ファイルのパスを指定します。 マウントとは簡単に言うとディレクトリを同期する事です。 restart コンテナの起動に失敗したときの再起動の設定。何もしない場合は「no」を設定。 再起動する場合は「always」を設定する。 environment 環境変数を指定します。 Mysqlのパスワードやデータベース名前などを指定し、ここで設定した環境変数名は実際のプログラムでも使います。 build Dockerファイルを使用してimageを作成するときに、使用するDockerファイルを指定します。 ここで作成したimageを使用してサービスのコンテナを立ち上げます。 ports ポートの設定を設定します。 depends_on ほかのサービスとの依存関係を設定します。 「compose up」と「compose down」したときに指定したサービスが先に起動/終了するようになります。 docker-compose.yml version: "3.7" services: mysql: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: "password" phpmyadmin: depends_on: - mysql image: phpmyadmin/phpmyadmin environment: PMA_HOST: mysql restart: always ports: - "8080:80" php-apache: build: ./php volumes: - ./htdocs:/var/www/html restart: always ports: - "80:80" depends_on: - mysql 「Docker-compose」コマンド一覧 コマンドの説明に関しては、こちらのサイトがわかりやすかったので、説明を引用をしています。 引用元のサイト docker-compose build 「docker-compose build」コマンドは、サービス内のイメージに対してビルドを行います。 イメージがビルドされていないとコンテナを起動できないため、先にイメージのビルドを行います。 サービスのビルド # サービスをビルド $ docker-compose build # サービスをビルド(キャッシュを使わない) $ docker-compose build --no-cache # サービスを指定してビルド $ docker-compose build [サービス名] docker-compose up 「docker-compose up」コマンドは、サービス内のイメージからコンテナを作成して起動します。 すでにコンテナが作成されている場合は、イメージを読み込み直してコンテナを再起動させます。 「-d」オプションをつけることで、バックグラウンドでコンテナを起動させることも可能です。 コンテナの起動 # サービスからコンテナを作成し、起動 $ docker-compose up -d docker-compose logs 「docker-compose logs」コマンドは、コンテナの起動ログを出力します。 コンテナ起動ログを確認 # サービスの起動ログを出力 $ docker-compose logs docker-compose run 「docker-compose run」コマンドは、指定したサービスから新たなコンテナを作成し、コマンドを実行します。 そのため、このコマンドを実行した回数だけコンテナが増えていきます。 コンテナを増やしたくない場合は、「--rm」オプションをつけましょう。 コマンドの実行 docker-compose run --rm app rails db:create docker-compose exe 「docker-compose build」コマンドは、指定したサービスのコンテナにログインします。 コンテナにログイン # コンテナにログイン $ docker-compose exec app bash docker-compose stop 「docker-compose stop」コマンドは、サービス内のコンテナを停止します。 コンテナ停止 # サービスのコンテナを再起動 $ docker-compose restart Restarting docker_web_1 ... done Restarting docker_app_1 ... done Restarting docker_db_1 ... done # 指定したサービスのコンテナを再起動 $ docker-compose restart app Restarting docker_app_1 ... done docker-compose rm 「docker-compose rm」コマンドは、サービス内のコンテナを削除します。 コンテナの削除 # サービスのコンテナを削除 $ docker-compose rm Going to remove docker_web_1, docker_app_1, docker_db_1 Are you sure? [yN] y Removing docker_web_1 ... done Removing docker_app_1 ... done Removing docker_db_1 ... done # 指定したサービスのコンテナを削除 $ docker-compose rm app Going to remove docker_app_1 Are you sure? [yN] y Removing docker_app_1 ... done
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む