mysql - dev - La tabla ''performance_schema.session_variables'' no existe
upgrade mysql ubuntu (9)
Como ninguna de las respuestas anteriores explica realmente lo que sucedió, decidí intervenir y aportar más detalles sobre este problema.
Sí, la solución es ejecutar el comando de actualización de MySQL, de la siguiente manera:
mysql_upgrade -u root -p --force
, pero ¿qué pasó?
La causa raíz de este problema es la corrupción de
performance_schema
, que puede ser causada por:
- Corrupción orgánica (volúmenes volviendo kaboom, error del motor, problema del controlador del kernel, etc.)
- Corrupción durante el parche mysql (no es extraño que esto suceda durante un parche mysql, especialmente para actualizaciones de versiones principales)
- Obviamente, una simple "caída de la base de datos performance_schema" causará este problema, y ​​presentará los mismos síntomas que si estuviera dañado
Este problema podría haber estado presente en su base de datos incluso antes del parche, pero lo que sucedió en MySQL 5.7.8 específicamente es que el indicador
show_compatibility_56
cambió su valor predeterminado de
ON
por defecto a
OFF
.
Este indicador controla cómo se comporta el motor en las consultas para configurar y leer variables (sesión y global) en varias versiones de MySQL.
Debido a que MySQL 5.7+ comenzó a leer y almacenar estas variables en
performance_schema
lugar de en
information_schema
, este indicador se introdujo como
ON
en las primeras versiones para reducir el radio de explosión de este cambio y para que los usuarios conozcan el cambio y se acostumbren.
OK, pero ¿por qué falla la conexión?
Debido a que dependiendo del controlador que esté utilizando (y su configuración), puede terminar ejecutando comandos para cada nueva conexión iniciada en la base de datos (como
show variables
, por ejemplo).
Debido a que uno de estos comandos puede intentar acceder a un
performance_schema
dañado, la conexión completa se cancela antes de iniciarse por completo.
Entonces, en resumen, es
posible que
(es imposible saberlo ahora) haya tenido
performance_schema
faltante o dañado antes de parchear.
El parche a 5.7.8 luego forzó al motor a leer sus variables fuera de
performance_schema
(en lugar de
information_schema
, de donde lo estaba leyendo debido a que el indicador estaba
ON
).
Como
performance_schema
estaba dañado, las conexiones fallan.
Ejecutar la actualización de MySQL es el mejor enfoque, a pesar del tiempo de inactividad. Activar el indicador es una opción, pero tiene sus propias implicaciones, como ya se señaló en este hilo.
Ambos deberían funcionar, pero sopesa las consecuencias y conoce tus opciones :)
Después de actualizar MySQL a 5.7.8-rc y registrarlo en el servidor, recibí un error:
Table ''performance_schema.session_variables'' doesn''t exist
No puedo encontrar ninguna solución para esto. Puede usted ayudar ?
Como pregunta de sesenta y cuatro bits, si su usuario root de mysql parece estar mal configurado, intente instalar la extensión del configurador de la fuente oficial de mysql:
https://dev.mysql.com/downloads/repo/apt/
Le ayudará a configurar una nueva contraseña de usuario root.
Asegúrese de actualizar su repositorio (debian / ubuntu):
apt-get update
Mysql_upgrade también funcionó para mí:
# mysql_upgrade -u root -p --force
# systemctl restart mysqld
Saludos, MSz.
Para mi sistema, el problema terminó siendo que todavía tenía Mysql 5.6 instalado y, por lo tanto, se llamaba mysql_upgrade.exe de esa instalación en lugar del 5.7.
Navegue a
C:/Program Files/MySQL/MySQL Server 5.7/bin
y ejecute
./mysql_upgrade.exe -u root
Pude iniciar sesión en el servidor mysql después de ejecutar el comando @robregonm sugerido:
mysql_upgrade -u root -p --force
Se requiere reiniciar el servidor MySQL.
Si, mientras usa el
mysql_upgrade -u root -p --force
obtiene este error:
Could not create the upgrade info file ''/var/lib/mysql/mysql_upgrade_info'' in the MySQL Servers datadir, errno: 13
simplemente agregue el
sudo
antes del comando.
Eso funcionó para mí y resolví mi problema.
Entonces, es:
sudo mysql_upgrade -u root -p --force
:)
Siga estos pasos sin
-p
:
-
mysql_upgrade -u root
-
systemctl restart mysqld
Tuve el mismo problema y funciona!
a veces
mysql_upgrade -u root -p --force
no es realmente suficiente,
consulte esta pregunta: la tabla ''performance_schema.session_variables'' no existe
de acuerdo a esto:
- cmd abierto
-
cd [installation_path]/eds-binaries/dbserver/mysql5711x86x160420141510/bin
-
mysql_upgrade -u root -p --force
mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;
según http://bugs.mysql.com/bug.php?id=78159 funcionó para mí.