読者です 読者をやめる 読者になる 読者になる

rails sでWebRick起動中に強制終了したらDBがおかしくなった

我が家のポンコツMacが作業中に死んだせいで躓いたためメモ。

強制終了後、再起動してrails sでサーバーを立ち上げ、作業再開するぞーと意気込んでいたら、migration関係のテーブルが無いぞ!とか何とか警告を受ける。

こんな感じのエラーメッセージ
Mysql2::Error: Table 'xxxxxxx_development.schema_migrations' doesn't exist: SELECT `schema_migrations`.* FROM `schema_migrations`

何言ってんだこいつと思いながらmysqlを開き、development用databaseの存在と、中身のtableがあることを確認。
しょうがないので一先ずrake db:dropするも、そんなデータベースないよと言われ悶絶する。

その後色々試行錯誤するも解決せず。

結局、直接DBのあるフォルダを消しに行ってrake db:create rake db:migrateしたら解決した。
恐らく強制終了のせいで、DBが変になっていただけだったんだと思う。

Homebrewで入れたmysqlの場合、DBのフォルダは
/usr/local/var/mysql
の中にある。

わけのわからないエラーが出ると動悸が激しくなるから本当にやめて頂きたい。

後日追記

同様の症状がまたも起こったので、上記の手順で復旧を試みたところ失敗。
結構見当違いの事をしていたらしい。

DBの削除を行ってから、

rake db:create RAILS_ENV=development
bin/rake db:migrate RAILS_ENV=development

という感じで、環境の指定を行えば上手く行った。
正直Railsの本番環境とか開発環境とか良く分からない現代魔法ですよ。
そのうち勉強する。