個人アプリを作成にあたり、DBを作成していたときにつまづいた話を以下に記載します。
カリキュラムなど指示通りにしかやっていなかったりすると、中々気づけないポイントだったと思います。
#何につまづいたのか+試してみたこと。
そもそも何につまづいたのか、以下に記載します。
個人アプリでDBを準備しようといつも通り下記コマンドを実行して、DB作成をしました。
$ rails db:create
$ rails db:migrate
その後、DBが作成できているか「Sequel Pro」を確認したところ、できていないことが判明。。。
念のため、ターミナルでもmysqlを確認しましたが、見つかりませんでした。
そこで、何かコマンドミスがあったことを疑い、改めてDB作成コマンドを実行しました。
$ rails db:create
Database 'db/development.sqlite3' already exists
Database 'db/test.sqlite3' already exists
既にDBがあるよ!とのこと。でもやっぱり見つかりません。。。
ここで気づかないのが、初学者な私。まだまだでした。
その後、いろいろ調べた結果、原因が判明します。
#原因
まずは結論から、今回の問題の原因は、Database.ymlの記述とSequel proの設定が違うことでした!
以下、細かく記載していきます。
そもそもですが、$rails db:createは[Database.yml]の記述をベースにDBを作成します。
そこで、今まで私が作成していた記述と今回の記述を確認しました。
#今までのファイル
default: &default
adapter: mysql2
#今回のファイル
default: &default
adapter: sqlite3
上記は一部抜粋ですが、adapterが違ってます!
Sequel proはmysqlのデータを引っ張ってきているので、いくらDBを作成しても出てくるわけないですね。。。
これで原因はわかりました!早速修正していきます。
#解決方法
まずはdatabase.ymlを今までのものをベースに書き換えます。
default: &default
adapter: mysql2
まだこのままでは終わりません!
adapterを変更するにはgemも変更する必要があります。
gem 'sqlite3'
#以下に変更
gem 'mysql2', '>= ver記載
bundle installも忘れずに行いましょう。
$bundle install
以上で変更は完了です!
改めてDB作成コマンド実行し確認したところ、Sequel proでも確認できました!
やはり自分で作成してみると、新たな気づきがありますね!
引き続き色々試しながらアプリ作成をがんばっていきたいと思います!
以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。
#参照
[初学者]既存アプリのDBをMySQLに変更する方法
https://qiita.com/shi-ma-da/items/caac6a0b40bbaddd9a6f