Ein Mord verursacht durch ERR 1067Als ich heute die SQL-Anweisung in Navicat ausführte, um eine Datentabelle zu erstellen, trat der Fehler Err 1067 auf. Bei manchen MySQL-Versionen von Kollegen ist diese Anweisung korrekt, bei anderen jedoch führt sie zu einem Fehler. Ist das nicht ärgerlich? Der Grund war, dass der Standardwert des Zeitstempels falsch war. Den Informationen zufolge gibt es in MySQL 5.7 einen STRICT-Modus. In diesem Modus darf der Datumswert standardmäßig nicht vollständig auf 0-Werte gesetzt werden. Um dieses Problem zu lösen, müssen Sie den Wert von sql_mode ändern. Die Quelle des zweiten Problems ist sql_modeWir können in MySQL gehen, um herauszufinden, was der SQL-Modus ist. Geben Sie zunächst das Bin-Verzeichnis unter dem MySQL-Installationsverzeichnis ein und melden Sie sich als Administratorbenutzer bei der MySQL-Datenbank an. Verwenden Sie den Befehl mysql –h localhost –u root–p, wobei -h der angegebene Hostname oder die IP-Adresse, -u der angegebene Benutzer und -p die Anmeldung mit dem Kennwort ist. Verwenden Sie den Befehl „select @@sql_mode;“, um den Wert von „sql_mode“ anzuzeigen. Wenn ich einen Befehl eingebe, aber nichts passiert, sondern nur -> erscheint, dann denke ich Wahrscheinlich haben Sie das ";" nicht eingegeben, so wie ich. Aus den Ergebnissen in der obigen Abbildung können wir erkennen, dass sql_mode NO_ZERO_IN_DATE und NO_ZERO_DATE hat. Geben Sie in der Befehlszeile ein setze sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); Du kannst sql_mode ändern. Sie können dann den Wert von sql_mode überprüfen. Es kann festgestellt werden, dass NO_ZERO_IN_DATE und NO_ZERO_DATE erfolgreich entfernt wurden. Ich habe die SQL-Anweisung zum Erstellen der Tabelle erneut ausgeführt, aber es hat nicht funktioniert und der Fehler 1067 ist trotzdem aufgetreten. Denken Sie nicht an ein Problem mit der falschen Haltung. Es liegt lediglich daran, dass der globale SQL-Modus nicht festgelegt ist und der hier festgelegte SQL-Modus keine Auswirkungen auf die Gesamtsituation hat. Verwenden Sie den Befehl „select @@global.sql_mode;“, um den Wert des globalen SQL-Modus anzuzeigen. Die verbleibenden Vorgänge sind dieselben wie bei den vorherigen SQL_Mode-Einstellungen, außer dass der vorherige SQL_Mode durch @@global.sql_mode ersetzt wird, wie in der Abbildung gezeigt. Nach Abschluss der Einstellungen können Sie das SQL-Statement in Navicat erneut ausführen, vorher müssen Sie sich jedoch erneut mit der Datenbank verbinden, da es sonst immer noch fehlschlägt. Fragen Sie mich nicht warum, nennen Sie mich einfach Lei Feng. Die Ergebnisse sind wie folgt: OK, dieses Mal wurde die Tabelle erfolgreich erstellt und es wurde der Fehler Err 1055 ausgegeben, was bedeutet: „Es kann keine Tabelle erstellt werden, die ein nicht aggregiertes Informationsschema für die Spalte enthält.“ PROFILING.SEQ ist gruppiert, diese Funktion basiert nicht mehr auf Gruppierung und ist mit der neuen Regel sql_mode=only_full_group_by inkompatibel. Es heißt auch, dass dies auf Dies wird durch „ONLY_FULL_GROUP_BY“ im SQL-Modus verursacht. Der SQL_Mode kann erneut geändert werden. Löschen Sie die zuvor erstellte Tabelle, stellen Sie die Verbindung zur Datenbank erneut her, führen Sie die SQL-Anweisung aus und dann ist alles in Ordnung. Natürlich stellt diese Lösung nur eine Übergangslösung dar. Nach einem Neustart der MySQL-Datenbank werden alle mit großem Aufwand eingestellten Werte wieder auf den Zustand vor der Freigabe zurückgesetzt. Hierfür gibt es eine Lösung, die ich Ihnen im Folgenden vorstelle. 3. SQL_Mode festlegenSie können den SQL-Modus festlegen, indem Sie die Konfigurationsdatei so ändern, dass sich der Wert des SQL-Modus nach dem Neustart der Datenbank nicht ändert. Zunächst müssen wir die Reihenfolge kennen, in der MySQL-Konfigurationsdateien geladen werden. Gehen Sie in das Bin-Verzeichnis des Datenbankinstallationsverzeichnisses und verwenden Sie den Befehl Sie können es sehen, indem Sie mysqld --verbose --help ausführen, aber die Ausgabe dieses Befehls ist zu lang und ich habe noch keinen geeigneteren Befehl zum Anzeigen gefunden. Die Ladereihenfolge ist wie folgt: Wenn diese Konfigurationsdateien geladen werden, überschreiben die später geladenen Dateien dieselben Werte in den zuvor geladenen Konfigurationsdateien. Aber ich habe es nur im MySQL-Installationsverzeichnis gefunden Eine Konfigurationsdatei mit einem sehr ähnlichen Namen, der Rest wurde nicht gefunden. Ändern Sie nach dem Sichern dieser Datei den Namen in my.ini, damit er der Datei in der angegebenen Reihenfolge des Ladens der Konfigurationsdateien entspricht. Öffnen Sie dann die Datei, meine Konfiguration hier In der Datei gibt es nur zwei Werte für sql_mode. Überprüfen Sie nach dem Neustart der Datenbank mit dem Befehl den Wert von sql_mode und stellen Sie fest, dass dieser genau mit dem in der Konfigurationsdatei übereinstimmt. Fertig! Zusätzliche Einführung in mehrere allgemeine sql_mode-Werte: Einführung in mehrere gängige Modi
Dies ist das Ende dieses Artikels zur Behebung des Fehlers beim Ändern des MySQL-SQL-Modus. Weitere relevante Inhalte zum MySQL-SQL-Modus finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Die detaillierteste Methode zur Installation von Docker auf CentOS 8
>>: Zusammenfassung der genauen Berechnungen verschiedener Abstände/Scrolldistanzen in einem Fenster
1. Was ist die HTML-Auszeichnungssprache? HTML is...
Verwenden Sie den Befehl „Find“, um Dateien zu fi...
Ich habe schon immer Graustufenbilder bevorzugt, d...
In diesem Artikel werden anhand von Beispielen al...
Inhaltsverzeichnis 1. Definition des Stapels 2. J...
SVG (Scalable Vector Graphics) ist ein Bildformat...
Inhaltsverzeichnis Zyklusvergleich Verwendung Zus...
Führen Sie Ihre Programme mit diesem praktischen ...
Die folgenden Attribute sind nicht sehr browserkom...
Ich frage mich, ob Sie jemals über diese Frage na...
Drei Wissenspunkte: 1. CSS-Nachkommenselektor htt...
Dieser Artikel stellt Nginx ausführlich vor, von ...
Vorwort Tomcat ist ein weit verbreiteter Java-Web...
Hintergrund: Ich möchte einen SAP ECC Server inst...
Die utf8mb4-Kodierung ist eine Obermenge der utf8...