Beim Einfügen eines Datensatzes in die MySQL-Datenbank ist gestern Abend ein Fehler aufgetreten! Die Datenbank meldete mir gnadenlos einen Fehler: Analyse Kurz gesagt definiert sql_mode die SQL-Syntax, die MySQL unterstützen soll, die Datenvalidierung usw. . So zeigen Sie den von der aktuellen Datenbank verwendeten SQL-Modus an: mysql> wähle @@sql_mode; Hier ist das aktuelle Schema meiner Datenbank: Der MySQL-Server kann in verschiedenen SQL-Modi arbeiten und diese Modi für verschiedene Clients auf unterschiedliche Weise anwenden. Dadurch können Anwendungen den Serverbetrieb an ihre Anforderungen anpassen. Solche Modi definieren die SQL-Syntax, die MySQL unterstützen soll, und welche Validierungsprüfungen an den Daten durchgeführt werden sollen. Dies erleichtert die Verwendung von MySQL mit anderen Datenbankservern in vielen verschiedenen Umgebungen. Ab MySQL 4.1 können Sie den Modus auch ändern, indem Sie die Variable sql_mode nach dem Start mit sql_mode Allgemeine Werte NUR_VOLLSTÄNDIGE_GRUPPE_NUR 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. Bei ungültigen SQL-Anweisungen wird bei der Ausführung folgender Fehler gemeldet: KEIN_AUTOMATISCHER_WERT_ BEI_NULL Dieser Wert wirkt sich auf Einfügungen in Auto-Increment-Spalten aus. Standardmäßig wird durch das Einfügen von 0 oder NULL der nächste Auto-Inkrement-Wert generiert. Diese Option ist nützlich, wenn der Benutzer einen Wert von 0 einfügen möchte und die Spalte automatisch inkrementiert wird. STRICT_TRANS_TABLES Wenn in diesem Modus ein Wert nicht in eine Transaktionstabelle eingefügt werden kann, wird der aktuelle Vorgang unterbrochen und es werden keine Einschränkungen für Nicht-Transaktionstabellen auferlegt. KEINE_NULL_IM_DATUM Im strikten Modus werden Daten mit einem Monats- oder Tagesteil von 0 nicht akzeptiert. Wenn wir die Option IGNORE verwenden, fügen wir für ähnliche Daten „0000-00-00“ ein. Im nicht strikten Modus wird das Datum akzeptiert, aber eine Warnung generiert. NO_ZERO_DATE Im strengen Modus wird „0000-00-00“ nicht als gültiges Datum betrachtet. Mit der Option IGNORE können Sie weiterhin Nulldaten einfügen. Im nicht strikten Modus wird das Datum akzeptiert, aber eine Warnung generiert. FEHLER BEI DIVISION DURCH NULL Wenn bei einem INSERT oder UPDATE Daten durch Null geteilt werden, wird ein Fehler und keine Warnung generiert. Wenn dieser Modus nicht angegeben ist, gibt MySQL NULL zurück, wenn der Wert durch Null geteilt wird. KEIN_AUTO_CREATE_USER Verhindern Sie, dass GRANT Benutzer mit leeren Passwörtern erstellt KEIN_ENGINE_SUBSTITUTION Wenn eine erforderliche Speicher-Engine deaktiviert oder nicht kompiliert ist, wird ein Fehler ausgegeben. Wenn dieser Wert nicht festgelegt ist, wird stattdessen die Standardspeicher-Engine verwendet und eine Ausnahme ausgelöst. ROHRE_ALS_CONCAT Behandeln Sie „||“ als Zeichenfolgenverkettungsoperator und nicht als ODER-Operator. Dies entspricht der Oracle-Datenbank und ähnelt der Zeichenfolgenverkettungsfunktion Concat ANSI_QUOTES Wenn ANSI_QUOTES aktiviert ist, können Sie keine Anführungszeichen zum Zitieren von Zeichenfolgen verwenden, da diese als Bezeichner interpretiert werden. MySQL 5.0 und höhere Versionen unterstützen drei SQL-Mode-Modi: ANSI, TRADITIONAL und STRICT_TRANS_TABLES. 1. ANSI-Modus: Lockerer Modus, ändert Syntax und Verhalten, um eine größere Konsistenz mit Standard-SQL zu erreichen. Ü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. Um den am Anfang des Artikels genannten Fehler zu beheben, können Sie zunächst sql_mode auf ANSI-Modus setzen, damit Sie Daten einfügen können und die Feldwerte, die sich aus dem Divisor 0 ergeben, von der Datenbank durch NULL-Werte ersetzt werden. 2. 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 statt nur einer Warnung gemeldet wird. Bei Verwendung für Transaktionen wird die Transaktion zurückgesetzt. Hinweis: Brechen Sie INSERT/UPDATE sofort ab, wenn ein Fehler auftritt. Dies ist nicht erwünscht, wenn Sie eine nicht transaktionale Speicher-Engine verwenden, da Datenänderungen, die vor dem Fehler vorgenommen wurden, nicht „übernommen“ werden, was zu „teilweise ausgeführten“ Aktualisierungen führt. 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. Wenn der angegebene Wert nicht in die Transaktionstabelle eingefügt werden kann, wird die Anweisung abgebrochen. Bei nicht transaktionalen Tabellen wird die Anweisung abgebrochen, wenn der Wert in einer einzeiligen Anweisung oder in Zeile 1 einer mehrzeiligen Anweisung erscheint. Festlegen des SQL-Modus Zeigen Sie den SQL-Modus der aktuellen Verbindungssitzung an: mysql> wähle @@session.sql_mode; Oder aus der Umgebungsvariable mysql> Variablen wie „sql_mode“ anzeigen; Zeigen Sie die globale SQL_Mode-Einstellung an: mysql> wähle @@global.sql_mode; Global eingestellt, Sie müssen sich erneut verbinden, damit dies wirksam wird mysql> globalen SQL-Modus festlegen = "NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION, NO_ZERO_DATE, NO_ZERO_IN_DATE"; Das Festlegen des globalen SQL-Modus kann ohne Neustart von MySQL wirksam werden. Einstellungen in der Konfigurationsdatei sql_mode=KEIN_AUTO_CREATE_USER,KEIN_ENGINE_SUBSTITUTION,KEIN_ZERO_DATE,KEIN_ZERO_IN_DATE Starten Sie den MySQL-Dienst nach dem Ändern der Konfigurationsdatei neu, damit die Änderungen wirksam werden Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: So verwenden Sie die Zusatzfunktionen von Vuex
>>: Erfahren Sie in zehn Minuten, wie Sie Microservices mit Docker bereitstellen
1: Installation eines privaten Docker-Warehouses ...
In diesem Artikel finden Sie den spezifischen Cod...
Manchmal ist es notwendig, bei Benutzereingaben e...
1. Grundlinien 2. Spezialeffekte (die Effekte sin...
Docker-Übersicht Docker ist eine Open-Source-Lösu...
In diesem Artikel wird der spezifische Implementi...
Hinweis: Bei der Webentwicklung werden IE und FF n...
MySQL ist ein relationales Datenbankverwaltungssy...
MySQL ist eine häufig verwendete Open-Source-Date...
Inhaltsverzeichnis Vorwort Was ist Hot Change Coc...
Ergebnisse erzielenAnforderungen/Funktionalität: ...
1. JS-Prinzip der asynchronen Ausführung Wir wiss...
In diesem Artikelbeispiel wird der spezifische Co...
Mehrere Unterschiede zwischen MySQL 5.x und MySQL...
Bereitstellungsumgebung: Hier wird ein Docker-Con...