6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[初歩的ミス]データベース作成でつまづいた時の話ー原因から解決まで

Last updated at Posted at 2019-12-11

個人アプリを作成にあたり、DBを作成していたときにつまづいた話を以下に記載します。
カリキュラムなど指示通りにしかやっていなかったりすると、中々気づけないポイントだったと思います。

#何につまづいたのか+試してみたこと。
そもそも何につまづいたのか、以下に記載します。
個人アプリでDBを準備しようといつも通り下記コマンドを実行して、DB作成をしました。

terminal
$ rails db:create

$ rails db:migrate

その後、DBが作成できているか「Sequel Pro」を確認したところ、できていないことが判明。。。
念のため、ターミナルでもmysqlを確認しましたが、見つかりませんでした。

そこで、何かコマンドミスがあったことを疑い、改めてDB作成コマンドを実行しました。

terminal
$ 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を作成します。
そこで、今まで私が作成していた記述と今回の記述を確認しました。

database.yml
#今までのファイル
default: &default
  adapter: mysql2

#今回のファイル
default: &default
  adapter: sqlite3

上記は一部抜粋ですが、adapterが違ってます!
Sequel proはmysqlのデータを引っ張ってきているので、いくらDBを作成しても出てくるわけないですね。。。
これで原因はわかりました!早速修正していきます。

#解決方法
まずはdatabase.ymlを今までのものをベースに書き換えます。

database.yml
default: &default
  adapter: mysql2

まだこのままでは終わりません!
adapterを変更するにはgemも変更する必要があります。

Gemfile
gem 'sqlite3'
 #以下に変更
gem 'mysql2', '>= ver記載

bundle installも忘れずに行いましょう。

terminal
$bundle install

以上で変更は完了です!
改めてDB作成コマンド実行し確認したところ、Sequel proでも確認できました!

やはり自分で作成してみると、新たな気づきがありますね!
引き続き色々試しながらアプリ作成をがんばっていきたいと思います!

以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。

#参照
[初学者]既存アプリのDBをMySQLに変更する方法
https://qiita.com/shi-ma-da/items/caac6a0b40bbaddd9a6f

6
7
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
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?