Heim  >  Artikel  >  Datenbank  >  Bringen Sie Ihnen einen Trick bei, um die sql_mode-Einstellung in MySQL zu korrigieren

Bringen Sie Ihnen einen Trick bei, um die sql_mode-Einstellung in MySQL zu korrigieren

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-08-05 09:22:513421Durchsuche

sql_mode ist eine Variable, die leicht übersehen wird. Der Standardwert ist null. Mit dieser Einstellung können einige illegale Vorgänge zugelassen werden, z. B. das Erlauben des Einfügens einiger illegaler Daten. Dieser Wert muss in der Produktionsumgebung auf den strikten Modus eingestellt werden, daher müssen auch die Datenbanken in den Entwicklungs- und Testumgebungen festgelegt werden, damit Probleme während der Entwicklungs- und Testphase entdeckt werden können.

1 Erweiterte Berechtigungen werden nur für die nächste Verbindung wirksam, wirken sich nicht auf die aktuelle Sitzung aus und werden nach dem Neustart von MySQL ungültig, da MySQL bei Bedarf die entsprechenden Werte in der Konfigurationsdatei erneut liest Um dauerhaft zu sein, müssen Sie den Wert in der Konfigurationsdatei ändern.

select @@session.sql_mode;
select @@global.sql_mode;

Speichern und beenden, Server neu starten, es wird dauerhaft wirksam

Allgemeine Werte von sql_mode sind wie folgt:

ONLY_FULL_GROUP_BY


Für GROUP BY-Aggregationsvorgänge, wenn die Spalten in SELECT nicht angezeigt werden in GROUP BY ist diese SQL ungültig, da die Spalte nicht in der GROUP BY-Klausel enthalten ist. In den Standardeinstellungen bedeutet das Einfügen von 0 oder NULL, dass der nächste automatisch steigende Wert generiert wird. Diese Option ist nützlich, wenn der Benutzer einen Wert von 0 einfügen möchte und die Spalte automatisch vergrößert 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 gibt keine Begrenzung für Nicht-Transaktionstabellen

NO_ZERO_IN_DATE

Im strikten Modus , nicht zulässig Das Datum oder der Monat ist Null. Solange der Monat oder Tag des Datums einen Wert von 0 enthält, wird ein Fehler gemeldet, außer bei „0000-00-00“.

NO_ZERO_DATE

Setzen Sie diesen Wert ein , die MySQL-Datenbank erlaubt das Einfügen von Nulldaten nicht. Das Einfügen von Nulldaten löst einen Fehler anstelle einer Warnung aus. Jedes Jahr, jeder Monat und jeder Tag, der nicht 0 ist, erfüllt die Anforderungen. Nur „0000-00-00“ meldet einen Fehler

ERROR_FOR_pISION_BY_ZERO

Während des INSERT- oder UPDATE-Vorgangs, wenn die Daten durch Null geteilt werden , wird anstelle einer Warnung ein Fehler generiert. Wenn der Modus nicht angegeben ist, gibt MySQL NULL zurück, wenn die Daten durch Null geteilt werden. Nach dem Festlegen des Modus wird ein Fehler gemeldet num ist null. Wenn dieser Wert nicht festgelegt ist, wird stattdessen die Standardspeicher-Engine verwendet und eine Ausnahme ausgelöst.

PIPES_AS_CONCAT

behandelt „||“ als String-Verbindungsoperator und nicht als OR-Operator, was mit der Oracle-Datenbank identisch ist Es ähnelt auch der String-Splicing-Funktion Concat

ANSI_QUOTES

Nach der Aktivierung von ANSI_QUOTES können Sie keine doppelten Anführungszeichen verwenden, um die Zeichenfolge in Anführungszeichen zu setzen, da diese als Bezeichner interpretiert wird

Verwandte Empfehlungen: „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen einen Trick bei, um die sql_mode-Einstellung in MySQL zu korrigieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen