RailsでSQLiteから途中でDB変更する際にかなりハマった話「Windows10」

Webエンジニアへの道

はじめに

 私が開発したアプリにcircleCIを導入するために、SQLiteからPosgreSQLかMYSQLに変更する必要がありました。その際かなりハマってしまったので備忘録としてここに残しておきます。ちなみに、私の用いている開発環境は、

  • Windows10
  • Rails5.2
  • Ruby2.6.3
  • Visual Studio Code

です。

SQLiteからMYSQL

 最初私は、SQLiteから、MYSQLに変更しようとしたのですが、Windows10ではMYSQLをrailsで使うために必要なgemfile:mysql2は、Ruby2.3までしか対応しておらず、MYSQLに変更することは断念しました。ちなみに私はこのことに気づくのに2日間かかってしまいました、、また、この問題はどうやらWindowsだけの問題らしいです。

mysql2をインストールしても、恐らくこのような警告がずっと出ることになると思います。

SQLiteからPostgreSQL

MYSQLへの移行は駄目でしたが、SQLiteからPostgreSQLの移行は上手く行きました。移行の時やったことについてまとめてみます。

1. PostgreSQLのインストール

インストール方法については省きますが、これがないと何も始まらないのでとりあえずインストールします。私の場合、現在の最新バージョン11.5をダウンロードしました。

インストールし、pathの設定が終わり、

が表示されれば成功です。

インストールやPathの設定の時このサイトがとても役に立ちました。https://www.dbonline.jp/postgresql/

2. gem ‘pg’のインストール

RailsでpostgreSQLを使用するために、pgというgemをインストールします。私の場合、本番環境だけpostgreSQLを使うわけではなくすべての環境で使いたかったため、sqlite3を削除しそこにpgを書いてbundle installをします。

3.config/database.ymlの変更

 

 

 

 

 

 

    変更後                       変更前

変更前のsqliteで書かれているdatabase.ymlを変更後のようにpostgreSQLを用いるために書き直しました。それぞれのdatabaseの名前は自分がこれから使用するものに名前を変更します。

4.databaseを作る

上で載せたサイトを見れば、詳しい説明が書いてありますが、一応こちらでもやってみます。

① まずは、$psql -U postgresを入力します。この時インストールしたときに設定したパスワードを入力することを求められますが、

pg_hba.confというファイルの最後の方に書いてある# IPv4 local connections:と# IPv6 local connections: のMETHODの部分をmd5からtrustに変更すると$psql -U postgresを入力したときpasswordを入力しなくて済みます。

② 次に、databaseを作成します。①を実行すると

のような画面になると思いますので、postgres=#のところに、

を入力します。CREATE DATABASEと出力されれば成功です。本当にdatabaseが作成されたか確認したい場合は\lを使えば見ることが出来ます。

後は、rails db:migrateを入力すれば上手くいくと思います!

まとめ

SQL周りの知識がまだ浅いため、いろいろ調べながらやっていたため、設定にかなり時間がかかりました。MYSQLの時点で2日間もかかってしまいましたし(笑)環境設定に時間をとられるのは本当嫌なのでもっと早くこういった設定ができるようになりたいです。この記事が私と同じように、Windowsで設定に困っている方の参考になればなと思います。

Mac欲しい。。

コメント

タイトルとURLをコピーしました