Noch einer. Ihr Upgrade war anscheinend nicht erfolgreich. Möglicherweise möchten Sie den Aktualisierungsvorgang erneut durchführen (oder die 5.7.8-rcVersion erneut installieren und eine vollständige Sicherung von DB wiederherstellen).
Rahul
2
mysql_upgradeHaben Sie ausgeführt, um sicherzustellen, dass Änderungen an den Kerntabellen / Datenbank vorgenommen wurden?
Marc B
Ja, ich habe es gemacht mysql_upgrade, ich versuche es zuletzt und installiere es erneut. Wenn es nicht funktioniert, werde ich auf Version 5.6 herunterstufen
Taz
28
Ich habe das gleiche Problem festgestellt. Um es zu lösen, mysql_upgrade -u root -p --forcestarte ich und starte den DB-Server neu.
Robregonm
Wenn der Befehl mysql_upgrade nicht funktioniert, ist die Tabelle mysql.performance_schema möglicherweise beschädigt. Wir hatten dieses Problem. Um das Problem zu beheben, haben wir den Datenbankserver mit dem folgenden Befehl entfernt: apt-get purge mariadb-client-10.1 mariadb-common mariadb-server-10.1. Dadurch wurden alle Datenbank-Binär-, Konfigurations- und Datendateien entfernt. Als nächstes haben wir den Datenbankserver neu installiert und die Datenbanken zurück importiert. Danach lief der Datenbankserver ohne Probleme
Ich musste mysqld neu starten ( mysql.server restartda ich eine Homebrew-Installation auf OS X verwende), daher war dies hilfreich. Ansonsten habe ich eine Fehlermeldung erhalten, dass session_variables die falsche Struktur haben.
Geoffrey Wiseman
Identisches Verhalten mit Homebrew unter OS X 10.10.5 (Yosemite). Durch das Upgrade wird auch ein Absturz in Sequel Pro 1.1 (Build 4499) behoben, wenn versucht wird, die Datenbank zu laden.
William Turrell
4
Native table 'performance_schema'.'session_variables' has the wrong structure
Stephen
8
Wenn Sie verwenden brew services, können Sie Ihren Server mit neu starten brew services restart mysql.
Frederik Kammer
1
Das funktioniert bei mir nicht, die richtige Antwort gibt viq. Es wird nur benötigt, um die Showkompatibilität zu aktivieren.
Kato2
482
Ich konnte mich am MySQL-Server anmelden, nachdem ich den Befehl @robregonm ausgeführt hatte:
Das hat gut funktioniert. Danke. Ich möchte wissen, was der Grund ist.
Diguage
2
Ich bekomme, Access denied for user 'root'@'localhost' (using password: YES) while connecting to the MySQL serverobwohl ich das richtige Root-Passwort verwende. Irgendeine Hilfe?? : - /
sixty4bit
4
@ sechzig4bit versuchen, die -p zu entfernen
Mike Mellor
1
@NevilleNazerane Ich bin nicht mit einfachem PHP vertraut, aber Sie sollten in der Lage sein zu finden, wo MySQL installiert wird, und dann einfach eine CDM-Eingabeaufforderung öffnen und das Verzeichnis an diesen Speicherort ändern. Jetzt sollten Sie den Befehl ausführen können.
Mihai Caracostea
4
@diguage Der Grund dafür ist, dass durch das Versions-Upgrade von MySQL inkompatible Schemata für interne Metadaten eingeführt wurden. Für mich aktualisiere ich MySQL 5.6 auf einem Mac mit Homebrew auf MySQL 5.7 und das MySQL-Datenverzeichnis war unverändert, sodass die neue Version MySQL die alten internen Metadaten las, aber nicht weiß, was zu tun ist - dieser Fehler, den wir hier gesehen haben, ist ein Manifest dieses Problems. Nach mysql_upgradeund einem Neustart funktionierte alles. Siehe: dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html
Devy
110
mysql -u app -p
mysql>set@@global.show_compatibility_56=ON;
Das hat bei mir perfekt funktioniert! Und ich musste den MySQL-Server nicht neu starten, was so umständlich gewesen wäre
anu.agg
3
Es tut mir leid, das ist eine etwas übergroße Lösung: wie mit einer Panzerfaust, um eine Fliege zu schießen. Dieser Kompatibilitätsschalter hat viel mehr Effekte, möglicherweise möchten Sie nicht alle.
Tuncay Göncüoğlu
@Tuncay Göncüoğlu Was sind einige dieser Nebenwirkungen?
Katzmopolitan
@katzmopolitan Lesen Sie hier: dev.mysql.com/doc/refman/5.7/en/… . Die Änderungen beziehen sich hauptsächlich auf die Behandlung von INFORMATION_SCHEMA (Sicherheit usw.), es gibt jedoch noch weitere.
Tuncay Göncüoğlu
Das hat auch bei mir funktioniert. Die Fehlermeldung, die ich erhielt, war von mysqldump. Sobald ich die vorgeschlagene Änderung vorgenommen hatte, funktionierte mysqldump. Sobald ich den Dump hatte, änderte ich einfach die show_compatibility_56 wieder auf OFF.
Bryan
23
Da keine der obigen Antworten tatsächlich erklärt, was passiert ist, habe ich mich entschlossen, mich zu melden und weitere Details zu diesem Thema zu bringen.
Ja, die Lösung besteht darin, den Befehl MySQL Upgrade wie folgt auszuführen: mysql_upgrade -u root -p --force Aber was ist passiert?
Die Hauptursache für dieses Problem ist die Beschädigung von performance_schema, die verursacht werden kann durch:
Beschädigung während des MySQL-Patches (es ist nicht ungewöhnlich, dass dies während eines MySQL-Patches passiert, insbesondere bei größeren Versions-Upgrades)
Ein einfaches "drop database performance_schema" verursacht offensichtlich dieses Problem und zeigt dieselben Symptome, als ob es beschädigt wäre
Dieses Problem war möglicherweise bereits vor dem Patch in Ihrer Datenbank vorhanden. In MySQL 5.7.8 wurde jedoch festgestellt, dass das Flag show_compatibility_56seinen Standardwert ONvon "Standard" auf "Standard" geändert hatOFF . Dieses Flag steuert, wie sich die Engine bei Abfragen zum Festlegen und Lesen von Variablen (Sitzung und global) in verschiedenen MySQL-Versionen verhält.
Da MySQL 5.7+ zu lesen und speichern begonnen , diese Variablen auf performance_schemastatt auf information_schemawurde, dieses Flag als eingeführt ONfür die ersten Veröffentlichungen der Explosionsradius dieser Änderung zu reduzieren und Nutzer über die Änderung zu informieren und sich daran gewöhnen.
OK, aber warum schlägt die Verbindung fehl? Abhängig vom verwendeten Treiber (und seiner Konfiguration) werden möglicherweise Befehle für jede neue Verbindung ausgeführt, die zur Datenbank initiiert wird ( show variablesz. B.). Weil einer dieser Befehle versuchen kann, auf einen beschädigten zuzugreifenperformance_schema Verbindung , wird die gesamte Verbindung abgebrochen, bevor sie vollständig initiiert wird.
Zusammenfassend lässt sich sagen, dass Sie möglicherweise (es ist derzeit nicht zu sagen) performance_schemavor dem Patchen entweder fehlten oder beschädigt waren. Der Patch auf 5.7.8 zwang die Engine dann dazu, Ihre Variablen auszulesen performance_schema(anstatt von dort information_schema, wo sie aufgrund des gedrehten Flags gelesen wurde ON). Da performance_schemawurde beschädigt, schlagen die Verbindungen fehl.
Das Ausführen eines MySQL-Upgrades ist trotz der Ausfallzeit der beste Ansatz. Das Aktivieren des Flags ist eine Option, hat jedoch eine Reihe von Auswirkungen, auf die bereits in diesem Thread hingewiesen wurde.
Beide sollten funktionieren, aber die Konsequenzen abwägen und Ihre Entscheidungen kennen :)
Das funktioniert! Nur systemctl restart mysqldhat nicht funktioniert.
Ninja
dann benutzesystemctl restart mysql
BitDEVil2K16
1
Wenn Ihr MySQL-Root-Benutzer als 60-Bit-Frage falsch konfiguriert zu sein scheint, versuchen Sie, die Konfigurator-Erweiterung aus der offiziellen MySQL-Quelle zu installieren:
Für mein System bestand das Problem darin, dass ich immer noch MySQL 5.6 installiert hatte und daher die Datei mysql_upgrade.exe aus dieser Installation anstelle der für 5.7 aufgerufen wurde. Navigieren Sie zu C:\Program Files\MySQL\MySQL Server 5.7\binund führen Sie es aus.\mysql_upgrade.exe -u root
Wenn Sie mit dem mysql_upgrade -u root -p --forceBefehl diesen Fehler erhalten:
Could notcreate the upgrade info file'/var/lib/mysql/mysql_upgrade_info'in the MySQL Servers datadir, errno:13
Fügen Sie einfach das sudovor dem Befehl hinzu. Das hat bei mir funktioniert und ich habe mein Problem gelöst. Also ist es: sudo mysql_upgrade -u root -p --force:)
5.7.8-rc
Version erneut installieren und eine vollständige Sicherung von DB wiederherstellen).mysql_upgrade
Haben Sie ausgeführt, um sicherzustellen, dass Änderungen an den Kerntabellen / Datenbank vorgenommen wurden?mysql_upgrade
, ich versuche es zuletzt und installiere es erneut. Wenn es nicht funktioniert, werde ich auf Version 5.6 herunterstufenmysql_upgrade -u root -p --force
starte ich und starte den DB-Server neu.Antworten:
Das mysql_upgrade hat auch für mich funktioniert:
Grüße, MSz.
quelle
mysql.server restart
da ich eine Homebrew-Installation auf OS X verwende), daher war dies hilfreich. Ansonsten habe ich eine Fehlermeldung erhalten, dass session_variables die falsche Struktur haben.Native table 'performance_schema'.'session_variables' has the wrong structure
brew services
, können Sie Ihren Server mit neu startenbrew services restart mysql
.Ich konnte mich am MySQL-Server anmelden, nachdem ich den Befehl @robregonm ausgeführt hatte:
Ein Neustart des MySQL-Servers ist erforderlich.
quelle
Access denied for user 'root'@'localhost' (using password: YES) while connecting to the MySQL server
obwohl ich das richtige Root-Passwort verwende. Irgendeine Hilfe?? : - /mysql_upgrade
und einem Neustart funktionierte alles. Siehe: dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.htmlgemäß http://bugs.mysql.com/bug.php?id=78159 hat für mich gearbeitet.
quelle
Da keine der obigen Antworten tatsächlich erklärt, was passiert ist, habe ich mich entschlossen, mich zu melden und weitere Details zu diesem Thema zu bringen.
Ja, die Lösung besteht darin, den Befehl MySQL Upgrade wie folgt auszuführen:
mysql_upgrade -u root -p --force
Aber was ist passiert?Die Hauptursache für dieses Problem ist die Beschädigung von
performance_schema
, die verursacht werden kann durch:Dieses Problem war möglicherweise bereits vor dem Patch in Ihrer Datenbank vorhanden. In MySQL 5.7.8 wurde jedoch festgestellt, dass das Flag
show_compatibility_56
seinen StandardwertON
von "Standard" auf "Standard" geändert hatOFF
. Dieses Flag steuert, wie sich die Engine bei Abfragen zum Festlegen und Lesen von Variablen (Sitzung und global) in verschiedenen MySQL-Versionen verhält.Da MySQL 5.7+ zu lesen und speichern begonnen , diese Variablen auf
performance_schema
statt aufinformation_schema
wurde, dieses Flag als eingeführtON
für die ersten Veröffentlichungen der Explosionsradius dieser Änderung zu reduzieren und Nutzer über die Änderung zu informieren und sich daran gewöhnen.OK, aber warum schlägt die Verbindung fehl? Abhängig vom verwendeten Treiber (und seiner Konfiguration) werden möglicherweise Befehle für jede neue Verbindung ausgeführt, die zur Datenbank initiiert wird (
show variables
z. B.). Weil einer dieser Befehle versuchen kann, auf einen beschädigten zuzugreifenperformance_schema
Verbindung , wird die gesamte Verbindung abgebrochen, bevor sie vollständig initiiert wird.Zusammenfassend lässt sich sagen, dass Sie möglicherweise (es ist derzeit nicht zu sagen)
performance_schema
vor dem Patchen entweder fehlten oder beschädigt waren. Der Patch auf 5.7.8 zwang die Engine dann dazu, Ihre Variablen auszulesenperformance_schema
(anstatt von dortinformation_schema
, wo sie aufgrund des gedrehten Flags gelesen wurdeON
). Daperformance_schema
wurde beschädigt, schlagen die Verbindungen fehl.Das Ausführen eines MySQL-Upgrades ist trotz der Ausfallzeit der beste Ansatz. Das Aktivieren des Flags ist eine Option, hat jedoch eine Reihe von Auswirkungen, auf die bereits in diesem Thread hingewiesen wurde.
Beide sollten funktionieren, aber die Konsequenzen abwägen und Ihre Entscheidungen kennen :)
quelle
Befolgen Sie diese Schritte ohne
-p
:mysql_upgrade -u root
systemctl restart mysqld
Ich hatte das gleiche Problem und es funktioniert!
quelle
systemctl restart mysqld
hat nicht funktioniert.systemctl restart mysql
Wenn Ihr MySQL-Root-Benutzer als 60-Bit-Frage falsch konfiguriert zu sein scheint, versuchen Sie, die Konfigurator-Erweiterung aus der offiziellen MySQL-Quelle zu installieren:
https://dev.mysql.com/downloads/repo/apt/
Es wird Ihnen helfen, ein neues Root-Benutzerpasswort einzurichten.
Stellen Sie sicher, dass Sie Ihr Repository (debian / ubuntu) aktualisieren:
quelle
Für mein System bestand das Problem darin, dass ich immer noch MySQL 5.6 installiert hatte und daher die Datei mysql_upgrade.exe aus dieser Installation anstelle der für 5.7 aufgerufen wurde. Navigieren Sie zu
C:\Program Files\MySQL\MySQL Server 5.7\bin
und führen Sie es aus.\mysql_upgrade.exe -u root
quelle
Wenn Sie mit dem
mysql_upgrade -u root -p --force
Befehl diesen Fehler erhalten:Fügen Sie einfach das
sudo
vor dem Befehl hinzu. Das hat bei mir funktioniert und ich habe mein Problem gelöst. Also ist es:sudo mysql_upgrade -u root -p --force
:)quelle
manchmal
mysql_upgrade -u root -p --force
ist nicht wirklich genug,Bitte beziehen Sie sich auf diese Frage: Die Tabelle 'performance_schema.session_variables' existiert nicht
danach:
cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
mysql_upgrade -u root -p --force
quelle