Ruby on Rails

Photo by: Andrew

どーも。最近、Railsをガジガジといじっています。するぷです。

YosemiteにしてからMySQLが非常に不安定です。

まぁまだオフィシャルに10.10対応版のMySQLが出ていないのが原因だとは思いますが、自動でMySQLをオンにするにしてもオンにならなかったり、RailsのDB内にあるschema_migrationsが読み込めなくなったりとなにやら不安定。

これまで何回か復旧作業をやってきましたが、そろそろ覚えておかないと面倒なくらいな頻度で壊れるので対処法をメモしておきます。

schema_migrationsが入っているDBを削除する。

Railsのschema_migrationsが壊れるとこんなエラーがでます。↓↓

Mysql2::Error: Table 'xxxx.schema_migrations' doesn't exist: SELECT `schema_migrations`.* FROM `schema_migrations`

「このテーブル、SELECTできねーぞ。まじで。」と言っているようで、いろいろ試しましたが、どうもschema_migrationsが入ったDBごと削除するしか手はないようです。

一応、schema_migrationsテーブルを削除して、CREATRE TABLEでschema_migrationsを作り直してみましたが下の様なエラーがでて作り直すことができず・・・。↓↓

ERROR 1813 (HY000): Tablespace for table '`xxxx`.`schema_migrations`' exists. Please DISCARD the tablespace before IMPORT.

いろいろググってみましたが、中国語のこのページに対処法が書いてありました。
Google翻訳によればDBごと消せばおkとのこと。↓↓

というわけで以下のコマンドを実行。(あ、当たり前ですがこの操作をするとDBの中にあるすべてのテーブルが消えます。大事なDBの場合はバックアップなどをお忘れ無く)

cd /usr/local/mysql/data
sudo rm -rf [schema_migrationsが入ったDB名]
bin/rake db:create db:migrate

無事、Yosemite内のRailsが動きました。はやくでてくれよ!Yosemite正式対応のMySQL!