LoginSignup
1
1

More than 1 year has passed since last update.

Railsで途中からDBをsqlite3からmysql2に変更するだけなのに死んだ【9日目】

Last updated at Posted at 2022-08-19

前提

  • develop環境でsqliteを使うと、production環境(AWS)への移行が面倒そうなので、mysqlに変更しようと思った(本番はmysqlを使いたいから)
  • まだ1度もdb:migrateしていない状態から作業した
  • そもそもrails new アプリ名 -d mysqlでデフォルトのDBをmysqlにできる
  • ruby "3.1.2"
  • rails "7.0.3.1"
  • M1MacBookPro

最初の躓きポイント

  • Gemfileからsqlite3を消し、mysql2を追加してbundle installでエラー
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 原因はmysqlをPCにインストールしてなかったこと
  • homebrewでmysqlをインストールしたらパス

次の躓きポイント

  • config/database.ymlをmysql用に書き直す
  • 具体的には、rails new アプリ名 -d mysqlで別のアプリを作って、そのdatabase.ymlをコピーした
  • mysql -u rootでエラー
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 原因はmysqlを起動していなかったこと
  • mysql.server start(終了時はstart→stop)
  • mysql -u rootでsqlに接続

3つ目の躓きポイント

  • create user ユーザー名@localhost identified by 'パスワード';ユーザーを作成
  • ちなみにSQLで文末に;をつけ忘れると=>が出てくるので;を打つと通る
  • quitでmysqlを抜けて、database.ymlにユーザー名とパスワードを入れ、rails db:createでエラー
  • 原因は作ったユーザーに権限がないこと
  • 作ったユーザーでmysqlに接続
  • 作ったユーザーに権限を与えようとするとエラー
  • 原因は新しいユーザーには、権限を付与する権限もないこと
  • rootで接続して、作ったユーザーに権限を与えることができる
  • rails db:createrails db:migrateがパス
  • rails sでlocalhostで確認して問題なし

結論

これだけのことに2時間以上費やした。最悪すぎる。以下がポイント。

  • そもそもPCにmysqlを入れたか
  • mysql.server startで起動したか
  • rootでユーザー権限を付与したか
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1