Table 'performance_schema.session_variables' doesn't exist ってなった
昔開発してたプロジェクトをリファクタリングしようと思って
rake db:migrate したら
@fumihumi:bundle exec rake db:migrate rake aborted! ActiveRecord::StatementInvalid: Mysql2::Error: Table 'performance_schema.session_variables' doesn't exist: SHOW VARIABLES LIKE 'character_set_database' /Users/fumihumi/.rbenv/versions/2.3.1/bin/bundle:23:in `load' /Users/fumihumi/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>' Mysql2::Error: Table 'performance_schema.session_variables' doesn't exist /Users/fumihumi/.rbenv/versions/2.3.1/bin/bundle:23:in `load' /Users/fumihumi/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)
忌々しいmysql error !!!!!!!!!!!
!w
なぜだ。。。。。
過去に開発してたとはいえrails 4系で開発していた環境を5系に変えたくらいしか心当たりがなかった。。。。。
bundle update や、rake db:drop、mysql.server restartを試したもののうまくいかず。。。(数日放置した。)
ふと思い出したのは、mysqlのバージョンをあげたなぁと。(以下記事) fumihumi.hatenablog.com
しらべてみると mysqlの5.7はだいぶ構造が変わっているとのこと。
エラーメッセージは
Mysql2::Error: Table 'performance_schema.session_variables' doesn't exist: SHOW VARIABLES LIKE 'character_set_database' なので。mysqlにたいして上記の参照ができないよ!ってことかと。。
解決
個人的にmysqlエラーが出た時の必殺技
$ mysql_upgrade -u root -p --force $ mysql.server restart
を試したらうまく動作するようになりました。
P.S. (備考) mysqlエラーの時は
brew doctor
xcode-select --install
といったコマンドたたくと治るときが多いような気がしてるw