【Rails5】 FATAL: database does not existに対処する方法
この記事の概要
プロジェクトを立ち上げて[FATAL: database does not exist]エラーに直面したので、解決法を書いておこうと思う。[図1] 「FATAL: database does not exist」(今回発生したエラー) |
目次
- この記事の概要
- 目次
- やろうと思ったこと
- エラーの分析
- 解決策
- まとめ
- 参考文献
やろうと思ったこと
プロジェクトを$rails newコマンドで作り、データベースをマイグレートしようとした。 するとこんなエラーが出た。
$ bin/rails db:migrate
rails aborted!
ActiveRecord::NoDatabaseError: FATAL: database "Twitter_Sample_development" does not exist /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:696:in `rescue in connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:691:in `connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize'
(以下略)
rails aborted!
ActiveRecord::NoDatabaseError: FATAL: database "Twitter_Sample_development" does not exist /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:696:in `rescue in connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:691:in `connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize'
(以下略)
データベースを作ろうとすると、rails先生にabortedされてしまう。いまいち原因がわからない。
エラーの分析
「FATAL: database does not exist」は正しく書くと、「FATAL: database 'データベース名' does not exist」と表記されている。'データベース名'なんて、そんな名前のデータベースはこのプロジェクトの中にはありませんよーと注意されているわけである。
データベースが存在していない・・・?そんなバカなと思ったのだが、直前のコマンドを見返してみると、
$ rails g scaffold post:string
おお、確かに。
そもそもデータベース作ってねーじゃん、ってなった。
scaffoldでまとめて色々作ってたものの、データベースに関しては何にもいじっていなかった。
解決策
で、どうすれば解決できるかというと、データベースを作ってやればいいのである。 データベースを作るにはこのコマンドを使えばよろしい。
$ rails db:create
すると、コンソールにズラズラと文字がでてくる。
$ rails db:create
Created database 'Twitter_Sample_development'
Created database 'Twitter_Sample_test'
んで、そうしてできたデータベースをマイグレーションしてあげると、
$ rails db:migrate
== 20190429084835 CreatePosts: migrating ======================================
-- create_table(:posts)
-> 0.0129s
== 20190429084835 CreatePosts: migrated (0.0132s) =============================
なんとかうまくいきました。
まとめ
まとめとしては 「FATAL: database does not exist」が出たら初歩的なミスなので、データベースが完成しているか確認しよう」ということです。今回の場合を、もう一度わかりやすく振り返ると、データベースを作るために「rails db:create」というコマンドを打たなくちゃいけなかったのに、先に「rails db:migrate」をしようとしたから、rails abortedされたと言う訳。
Railsプロジェクトを作成する時の手順は、慣れるまではきちんとチートシートなりサイトなり教本なりをちゃんと読んで、間違えないようにコマンドを打たなくちゃいけないという学びを得ました。
参考文献
・【Rails5】新しいプロジェクトを作る時の備忘録
(https://tea-programming.blogspot.com/2019/04/rails5.html)
(https://tea-programming.blogspot.com/2019/04/rails5.html)
コメント
コメントを投稿