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の本番環境とか開発環境とか良く分からない現代魔法ですよ。
そのうち勉強する。