MySQLを5.7.8-rcにアップグレードし、サーバーにログを記録した後、エラーが発生しました。
Table 'performance_schema.session_variables' doesn't exist
これに対する解決策が見つかりません。手伝ってくれますか ?
Mysql_upgradeも私のために働きました:
# mysql_upgrade -u root -p --force
# systemctl restart mysqld
よろしく、MSz。
私は@robregonmが提案したコマンドを実行した後、mysqlサーバーにログオンすることができました:
mysql_upgrade -u root -p --force
MySQLサーバーの再起動が必要です。
mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;
のように http://bugs.mysql.com/bug.php?id=78159 私のために働いた。
上記の答えのどれも実際には何が起こったのかを説明していないので、私はこの問題について詳しく説明し、もう少し詳しく説明することにしました。
はい、解決策は以下のようにMySQL Upgradeコマンドを実行することです:mysql_upgrade -u root -p --force
、しかし何が起こりましたか?
この問題の根本的な原因はperformance_schema
の破損です。
この問題は、パッチ適用前でもデータベースに存在していた可能性がありますが、MySQL 5.7.8で特に発生したのは、フラグshow_compatibility_56
がデフォルト値をデフォルトのON
からOFF
に変更したことです。このフラグは、さまざまなMySQLバージョンで変数(セッションおよびグローバル)を設定および読み取るためのクエリに対するエンジンの動作を制御します。
MySQL 5.7以降では、これらの変数の読み取りと格納をperformance_schema
ではなくinformation_schema
に開始したため、最初のリリースではこのフラグがON
として導入され、この変更の範囲を広げてユーザーに知らせています。
しかし、なぜ接続が失敗するのでしょうか。使用しているドライバ(およびその設定)によっては、データベースへの新しい接続(たとえばshow variables
など)ごとにコマンドが実行される可能性があるためです。これらのコマンドの1つが破損したperformance_schema
にアクセスしようとする可能性があるため、完全に開始される前に接続全体が中止されます。
要約すると、あなたは may (今では不可能です)パッチを当てる前にperformance_schema
が見つからないか壊れています。 5.7.8へのパッチはそれから(ON
が回されたためにそれがそれを読んでいたperformance_schema
の代わりに)エンジンにあなたの変数をinformation_schema
から読ませることを強制した。 performance_schema
が破損しているので、接続は失敗しています。
ダウンタイムにもかかわらず、MySQLアップグレードを実行するのが最善の方法です。フラグをオンにすることは1つのオプションですが、それはすでにこのスレッドで指摘されているように、それはそれ自身の含意のセットが付属しています。
両方ともうまくいくはずですが、結果に重点を置き、あなたの選択を知ってください:)
-p
なしで次の手順を実行します。
mysql_upgrade -u root
systemctl restart mysqld
私は同じ問題を抱えていましたが、うまくいきます!
Sixty4bitの質問として、あなたのmysql rootユーザが誤って設定されているように見える場合は、mysqlの公式ソースからコンフィギュレータ拡張をインストールしてみてください。
https://dev.mysql.com/downloads/repo/apt/
新しいrootユーザーのパスワードを設定するのに役立ちます。
リポジトリを必ず更新してください(debian/ubuntu):
apt-get update
私のシステムでは、問題はMysql 5.6がまだインストールされていたため、そのインストールからのmysql_upgrade.exeが5.7の代わりに呼び出されていたことです。 C:\Program Files\MySQL\MySQL Server 5.7\bin
に移動して.\mysql_upgrade.exe -u root
を実行します
mysql_upgrade -u root -p --force
コマンドを使用中にこのエラーが発生した場合:
Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13
コマンドの前にSudo
を追加するだけです。それは私のために働いた、そして私は私の問題を解決した。 Sudo mysql_upgrade -u root -p --force
:)