VorwortIch glaube, dass diejenigen, die den vorherigen Artikel „MySQL-Fall: Eine Datenverlusttragödie“ gelesen haben, erkennen sollten, dass sql_mode eine sehr kritische Konfiguration ist. Als Nächstes werde ich eine detaillierte Analyse dieses Konfigurationselements bringen. sql_mode erklärtsql_mode wirkt sich direkt auf die SQL-Syntaxunterstützung und die Datenvalidierung aus. Es enthält viele Optionen, darunter der Standardwert der Version 5.7
, es wird im Allgemeinen nicht empfohlen, es zu ändern. Die wichtigsten OptionenZu den wichtigsten Optionen von sql_mode gehören die folgenden drei: (1) ANSI: Mit dieser Option legen Sie die SQL-Syntaxunterstützung fest. Bei der Einstellung ANSI wird die Standard-SQL-Syntax eher eingehalten. (2) STRICT_TRANS_TABLES: Diese Option bestimmt die Datenvalidierung. Bei transaktionalen Speicher-Engines schlägt die Transaktion fehl und wird zurückgesetzt, wenn ein ungültiger Wert auftritt. Bei nicht-transaktionalen Speicher-Engines schlägt die Transaktion fehl, wenn der ungültige Wert in der ersten Zeile auftritt. Wenn der ungültige Wert in der Mitte auftritt, wird der ungültige Wert angepasst und ein Alarm ausgelöst. (3) TRADITIONELL: Mit dieser Option wird die Leistung im Einklang mit traditionellen relationalen Datenbanken bestimmt. Bei einigen abnormalen Vorgängen werden Fehler direkt gemeldet, anstatt Warnmeldungen auszugeben. Alle Optionensql_mode umfasst außerdem die folgenden Optionen: (4) ALLOW_INVALID_DATES: Diese Option entscheidet, keine strenge Datumsüberprüfung durchzuführen; sie überprüft nur, ob der Monatsbereich 1-12 und der Tagbereich 1-31 ist, überprüft jedoch nicht, ob das spezifische Datum gültig ist. Beispielsweise ist das unzulässige Datum 2020-04-31 zulässig. (5) ANSI_QUOTES: Mit dieser Option wird das Anführungszeichen festgelegt; sie ermöglicht die Verwendung des doppelten Anführungszeichens " als Anführungszeichen, genau wie das Backquote `. (6) ERROR_FOR_DIVISION_BY_ZERO: Diese Option bestimmt den Rückgabewert der Division durch Null. Wenn diese Option nicht aktiviert ist, ist der Rückgabewert der Division durch Null Null und es wird keine Warnung generiert. Wenn diese Option aktiviert ist, sich aber im nicht strikten Modus befindet, ist der Rückgabewert der Division durch Null Null und es wird eine Warnung generiert. Wenn diese Option aktiviert ist und sich im strikten Modus befindet, führt die Division durch Null zu einem Fehler. (7) HIGH_NOT_PRECEDENCE: Diese Option bestimmt die Priorität der Not-Operation; wenn aktiviert, wird NOT a BETWEEN b AND c als NOT (a BETWEEN b AND c) analysiert; in einigen älteren Versionen wird NOT a BETWEEN b AND c als (NOT a) BETWEEN b AND c analysiert. (8) IGNORE_SPACE: Mit dieser Option legen Sie fest, ob Leerzeichen zwischen dem Funktionsnamen und den Klammern ignoriert werden sollen. Wenn diese Option aktiviert ist, wird kein Fehler gemeldet. (9) NO_AUTO_CREATE_USER: Diese Option legt fest, dass die Grant-Anweisung nicht automatisch einen Benutzer erstellt. Sie ist veraltet und die Grant-Anweisung erstellt keinen Benutzer. (10) NO_AUTO_VALUE_ON_ZERO: Diese Option bestimmt die Generierung von Auto-Increment-Spalten. Wenn Sie 0 oder null in eine Auto-Increment-Spalte einfügen, generiert das System im Allgemeinen automatisch die nächste Auto-Increment-Spalte. Wenn diese Option aktiviert ist, bleibt beim Einfügen von 0 in eine Auto-Increment-Spalte der ursprüngliche Wert 0 erhalten, und beim Einfügen von null wird automatisch die nächste Auto-Increment-Spalte generiert. (11) NO_BACKSLASH_ESCAPES: Diese Option bestimmt die Wirkung des Backslashs \; wenn aktiviert, wird der Backslash \ nicht mehr als Escape-Zeichen, sondern als normales Zeichen verwendet. (12) NO_DIR_IN_CREATE: Mit dieser Option legen Sie fest, ob beim Erstellen einer Tabelle alle INDEX DIRECTORY und DATA DIRECTORY Anweisungen ignoriert werden sollen; die Option ist nur in der Slave-Datenbank wirksam. (13) NO_ENGINE_SUBSTITUTION: Diese Option legt fest, ob beim Erstellen einer Tabelle eine nicht vorhandene/nicht unterstützte Speicher-Engine angegeben wird und diese automatisch in die Standard-Speicher-Engine umgewandelt wird. (14) NO_FIELD_OPTIONS: Veraltet. (15) NO_KEY_OPTIONS: Veraltet. (16) NO_TABLE_OPTIONS: Veraltet. (17) NO_UNSIGNED_SUBTRACTION: Normalerweise ist das Ergebnis beim Subtrahieren ganzer Zahlen (von denen eine kein Vorzeichen hat) kein Vorzeichen und es wird ein Fehler gemeldet, wenn das Ergebnis negativ ist. Wenn diese Option aktiviert ist, können negative Zahlen normal verarbeitet werden. (18) NO_ZERO_DATE: Diese Option bestimmt, ob '0000-00-00' eingefügt werden kann. Wenn sie nicht aktiviert ist, kann '0000-00-00' ohne Warnung eingefügt werden. Wenn sie aktiviert ist, sich aber im nicht strikten Modus befindet, kann '0000-00-00' eingefügt werden, es wird jedoch eine Warnung generiert. Wenn sie aktiviert ist und sich im nicht strikten Modus befindet, kann '0000-00-00' nicht eingefügt werden und es wird direkt ein Fehler gemeldet. (19) NO_ZERO_IN_DATE: Diese Option legt fest, ob Monat und Datum 00 sein können. Wenn sie nicht aktiviert ist, können Monat und Datum 00 sein und es wird keine Warnung generiert. Wenn sie aktiviert ist, sich aber im nicht strikten Modus befindet, können Monat und Datum 00 sein, es wird jedoch eine Warnung generiert. Wenn sie aktiviert ist und sich im nicht strikten Modus befindet, wird ein Fehler gemeldet, wenn Monat und Datum nicht 00 sein können. (20) ONLY_FULL_GROUP_BY: Mit dieser Option legen Sie fest, welche nicht aggregierten Felder nach select/having/order by in der group by-Klausel erscheinen müssen. (21) PAD_CHAR_TO_FULL_LENGTH: Normalerweise werden bei der Abfrage eines Felds vom Typ „char“ die nachstehenden leeren Daten abgeschnitten. Nachdem diese Option aktiviert wurde, werden bei der Abfrage eines Felds vom Typ „char“ die nachstehenden leeren Daten nicht abgeschnitten. (22) PIPES_AS_CONCAT: Diese Option legt fest, ob das Symbol || als String-Verkettungsoperator und nicht als Synonym für OR behandelt wird. (23) REAL_AS_FLOAT: Diese Option legt fest, ob REAL als Synonym für FLOAT und nicht als Synonym für DOUBLE behandelt wird. (24) STRICT_ALL_TABLES: Diese Option bestimmt die Datenvalidierung. Bei transaktionalen Speicher-Engines schlägt die Transaktion fehl und wird zurückgesetzt, wenn ein ungültiger Wert auftritt. Bei nicht transaktionalen Speicher-Engines schlägt die Transaktion fehl, wenn der ungültige Wert in der ersten Zeile auftritt. Wenn der ungültige Wert in der Mitte auftritt, ist die vorherige Operation erfolgreich und die nachfolgende Operation meldet direkt einen Fehler, was zu einem teilweisen Erfolg und einem teilweisen Fehlschlag der Transaktion führt. ZusammenfassenDurch das oben Gelernte glaube ich, dass jeder ein detaillierteres Verständnis der verschiedenen Optionen von sql_mode hat. In Bezug auf die Einstellung von sql_mode lauten meine persönlichen Vorschläge wie folgt: (1) Für die Versionen 5.5/5.6 wird empfohlen, den SQL-Modus auf den Standardwert 5.7 einzustellen. (2) Behalten Sie für Version 5.7 den Standardwert von sql_mode bei. (3) Für die Version 8.0 kann sql_mode auch auf dem Standardwert belassen werden. Die Einstellung sql_mode ermöglicht MySQL eine sehr flexible Ausführung in verschiedenen Modi, bringt aber auch verschiedene Risiken mit sich. Da MySQL in verschiedenen wichtigen Systemen weit verbreitet ist, wird empfohlen, die Einstellungen von sql_mode streng zu überprüfen und die Verwaltung von Entwicklungscodes zu standardisieren. Tatsächlich ist dies auch an den offiziellen Standardwerten zu erkennen. Mit jeder Iteration der MySQL-Versionen werden die Einstellungen von sql_mode immer strenger. Oben finden Sie den detaillierten Inhalt der ausführlichen Erläuterung zur Verwendung von MySQL sql_mode. Weitere Informationen zur Verwendung von MySQL sql_mode finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So packen Sie das Projekt per Idee in Docker
>>: Webdesign muss Zweck, Ideen, Gedanken und Beständigkeit haben
Studenten, die Websites erstellen, stellen häufig...
In diesem Artikel finden Sie den spezifischen Cod...
Es gibt eine solche Anforderung: eine Importschal...
Inhaltsverzeichnis Einführung So stellen Sie eine...
Inhaltsverzeichnis 1 Master-Slave-Lese-/Schreibtr...
Die Wiederverwendung von Code in Vue liefert uns ...
Mir war langweilig und plötzlich fiel mir die Impl...
Datenträger automatisch erkennen Konfigurationssc...
In diesem Artikel wird die Verwendung von js- und...
Inhaltsverzeichnis Vorwort Persistenz globaler Pa...
1. Zeitarten werden unterteilt in: 1. Netzwerkzei...
Bereitstellen einer Datenbank basierend auf Docke...
Inhaltsverzeichnis Überblick Die Rolle des Revers...
Inhaltsverzeichnis 1. Ändern Sie den Port 2375 vo...
1. Voraussetzungen Da ich es schon mehrmals insta...