fumihumiのブログ

プログラミングの備忘録

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:dropmysql.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