Phänomen: Nach MySQL Version 5.7 ist der Standardwert der Datums- und Datums-/Uhrzeittypen auf „0000-00-00“ eingestellt und es tritt eine Ausnahme auf: Ungültiger Standardwert für „Uhrzeit“ Grund: Überprüfen Sie die aktuelle SQL_Mode-Konfiguration im Befehlszeilenfenster: wählen Sie @@sql_mode; Hier sind die Ergebnisse:
Die beiden Optionen NO_ZERO_IN_DATE und NO_ZERO_DATE verbieten Datums- und Zeitangaben wie 0000. Setzen Sie daher in der MySQL-Konfigurationsdatei den SQL_Mode zurück und entfernen Sie diese beiden Elemente. Lösung 1. Unter Windows: Verwenden Sie SET [SESSION|GLOBAL] sql_mode='modes' Hinweis: SESSION (Standardoption): bedeutet, dass es in der aktuellen Sitzung wirksam ist; GLOBAL (Neustart erforderlich): bedeutet, dass es global wirksam ist Sie können auch die Konfigurationsdatei my.ini ändern *** Demo: SETZEN SIE GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES, FEHLER_FÜR_DIVISION_DURCH_NULL,KEIN_AUTO_CREATE_USER,KEIN_ENGINE_SUBSTITUTION' 1. Linux-System: Ändern Sie die Datei my.cnf und fügen Sie [mysqld] hinzu. Kopieren Sie den Code wie folgt: SQL-Modus = NUR_VOLLSTÄNDIGE_GRUPPE_NUR, STRENGE_TRANS_TABELLEN, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTO_CREATE_USER, KEIN_ENGINE_SUBSTITUTION Nachdem die Änderung abgeschlossen ist, müssen Sie MySQL neu starten 2. Mac-System: In MacOS gibt es standardmäßig keine my.cnf-Datei. Wenn Sie MySQL anpassen müssen, kopieren Sie eine beliebige .cnf-Datei im Verzeichnis /usr/local/mysql/support-files/. Ich habe my-default.cnf kopiert und in ein anderes Verzeichnis gelegt. Nachdem ich die oben genannten Änderungen vorgenommen hatte, habe ich es in my.cnf umbenannt, in das Verzeichnis /etc kopiert und MySQL neu gestartet. sql_mode Modus Problem Erweiterung sql_mode Allgemeiner Wert Beschreibung 1.SQL-Syntax-Unterstützungsklasse
Bei GROUP BY-Aggregationsvorgängen gilt: Wenn die Spalten in den Klauseln SELECT, HAVING oder ORDER BY nicht in GROUP BY vorkommen, ist das SQL ungültig. Dies ist verständlich, da die Spalten, die nicht in der Gruppierungsabfrage nach Spalten enthalten sind, widersprüchlich wären. In 5.7 ist es standardmäßig aktiviert, daher müssen Sie beim Upgradevorgang von 5.6 auf 5.7 auf Folgendes achten:
Wenn ANSI_QUOTES aktiviert ist, können Sie keine Anführungszeichen zum Zitieren von Zeichenfolgen verwenden, da diese genauso wie ` als Bezeichner interpretiert werden. Nach dem Festlegen meldet update t set f1="" ... einen Syntaxfehler wie „Unbekannte Spalte '' in 'Feldliste‘.“
Behandeln Sie || als einen String-Verkettungsoperator und nicht als einen Operator. Dies ist dasselbe wie bei der Oracle-Datenbank und ähnelt der String-Verkettungsfunktion CONCAT()
SHOW CREATE TABLE gibt keine MySQL-spezifische Syntax wie ENGINE aus. Dies muss berücksichtigt werden, wenn mysqldump zur Migration zwischen Datenbanktypen verwendet wird.
Es werden buchstäblich nicht automatisch Benutzer erstellt. Wenn wir einem MySQL-Benutzer eine Autorisierung erteilen, verwenden wir normalerweise GRANT ... ON ... TO dbuser, um den Benutzer gleichzeitig zu erstellen. Nach dem Festlegen dieser Option ähnelt es dem Oracle-Vorgang. Vor der Autorisierung müssen Benutzer erstellt werden. Dies ist ab 5.7.7 auch die Standardeinstellung. 2. Dateneinsicht
Das Datum '0000-00-00' wird als ungültig betrachtet, abhängig davon, ob der folgende strikte Modus eingestellt ist. 1. Wenn der strikte Modus eingestellt ist, wird NO_ZERO_DATE natürlich erfüllt. Aber wenn es INSERT IGNORE oder UPDATE IGNORE ist, ist „0000-00-00“ immer noch zulässig und es wird nur eine Warnung angezeigt. 2. Wenn NO_ZERO_DATE im nicht strikten Modus festgelegt ist, ist die Auswirkung dieselbe wie oben, „0000-00-00“ ist zulässig, aber es wird eine Warnung angezeigt; wenn NO_ZERO_DATE nicht festgelegt ist, wird keine Warnung ausgegeben und es wird als völlig zulässiger Wert behandelt. 3. NO_ZERO_IN_DATE ähnelt der obigen Situation, außer dass es steuert, ob das Datum und der Tag 0 sein können, d. h. ob 2010-01-00 zulässig ist.
Was soll ich tun, wenn ich ENGINE mit ALTER TABLE oder CREATE TABLE angebe und die erforderliche Speicher-Engine deaktiviert oder nicht kompiliert ist? Wenn NO_ENGINE_SUBSTITUTION aktiviert ist, wird direkt ein Fehler ausgegeben. Wenn dieser Wert nicht festgelegt ist, verwendet CREATE stattdessen die Standardspeicher-Engine, ATLER nimmt keine Änderungen vor und gibt eine Warnung aus.
Durch diese Einstellung wird der strikte Modus aktiviert. Beachten Sie, dass STRICT_TRANS_TABLES keine Kombination mehrerer Strategien ist, sondern sich auf den Umgang mit fehlenden oder ungültigen Werten bei INSERT und UPDATE bezieht: Die Übergabe von '' an int ist im strikten Modus unzulässig. Wenn der nicht strikte Modus aktiviert ist, wird es 0 und eine Warnung wird generiert.
MySQL 5.0 und höhere Versionen unterstützen drei SQL-Mode-Modi: set @@sql_mode=xxx Modusname; Der von uns häufig festgelegte SQL-Modus ist ANSI, STRICT_TRANS_TABLES, TRADITIONAL, wobei ANSI und TRADITIONAL Kombinationen der oben genannten sind. 3.ANSI-Modus: Loose-Modus, überprüfen Sie die eingefügten Daten. Wenn sie nicht dem definierten Typ oder der definierten Länge entsprechen, passen Sie den Datentyp an oder kürzen Sie ihn vor dem Speichern und geben Sie eine Warnung aus. 4. TRADITIONELLER Modus: Strenger Modus. Beim Einfügen von Daten in die MySQL-Datenbank wird eine strenge Datenüberprüfung durchgeführt, um sicherzustellen, dass keine falschen Daten eingefügt werden können und ein Fehler gemeldet wird. Bei Verwendung für Transaktionen wird die Transaktion zurückgesetzt. 3. STRICT_TRANS_TABLES-Modus: Strenger Modus, es wird eine strenge Datenüberprüfung durchgeführt, falsche Daten können nicht eingefügt werden und ein Fehler wird gemeldet. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der grep- und egrep-Befehle in Linux
>>: JavaScript+html implementiert zufällige QR-Code-Verifizierung auf Frontend-Seiten
Vorwort Im Linux-Betriebssystem sind Gerätedateie...
Suchspiegel Docker-Suche Rocketmq Bildversion anz...
Inhaltsverzeichnis Benutzerdefiniertes Docker-Net...
Inhaltsverzeichnis Definition Grammatik Beispiele...
Vorwort Kürzlich wurden Daten online falsch bearb...
Tomcat ist weithin als Webcontainer bekannt. Es h...
Wie funktioniert „Adaptives Webdesign“? Eigentlich...
1. Systemkonfiguration 1. Deaktivieren Sie das Su...
Effektbild (die Rahmenfarbe ist zu hell, setzen S...
Inhaltsverzeichnis Konzept Array-Destrukturierung...
1. Installation und Konfiguration von Apache 2.4....
Inhaltsverzeichnis Vorwort: 1. Einführung in die ...
1. Einleitung Mit Imagemaps können Sie Bereiche e...
Komponente zur Leistungsoptimierung für den erste...
Inhaltsverzeichnis Vorne geschrieben Anmeldeübers...