Heim >Datenbank >MySQL-Tutorial >Eine Erklärung des strengen MySQL-Modus
Suchen Sie my.cnf im MySQL-Installationsverzeichnis (für Windows-Systeme). my.ini) In der Datei
bedeutet das Hinzufügen von STRICT_TRANS_TABLES zu sql_mode, dass der strikte Modus aktiviert wird Nicht-strikter Modus. Starten Sie MySQL nach der Änderung neu
2. Funktionsbeschreibung des strengen Modus
Nein. Unterstützt das Einfügen von „Werten“ für sich selbst erhöhende Felder.
Unterstützt keine Textfelder mit Standardwerten
3. Beispiel:
<span style="color: rgb(0, 0, 0);">CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8;</span>1. Nicht-Null-Feld fügt Nullwerttest ein
Einen Datensatz einfügen, der Wert des Namens ist null
Im nicht-strikten Modus ausführen
<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values('programmer');<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+------+------------+| id | name | content |<br/>+----+------+------------+| 1 | | programmer |<br/>+----+------+------------+1 row in set (0.00 sec)</span>
wird erfolgreich ausgeführt und der Wert von name wird automatisch in „
Im strengen Modus ausführen
<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values('programmer');ERROR 1364 (HY000): Field 'name' doesn't have a default value</span>
Ausführung fehlgeschlagen, da der Feldname kein Nullwert sein darf 2. Fügen Sie „Werttest“ ein für sich selbst vergrößerndes Feld“
„Wert für ID-Feld“ einfügen
Ausführen im nicht-strikten Modus
<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name | content |<br/>+----+----------+------------+| 1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>
Erfolgreich ausgeführt
<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');<br/>ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1</span>
Ausführung fehlgeschlagen, da die Feld-ID angezeigt wird kann nicht sein „<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(null,'fdipzone','programmer');<br/>Query OK, 1 row affected (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name | content |<br/>+----+----------+------------+| 1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>
Wenn die Feld-ID null ist, kann sie erfolgreich ausgeführt werden
3. Textfeld-Standardwerttest
Erstellen Sie eine Datentabelle mytable, in der Text den Standardwert default="
Ausgeführt festlegt im nicht-strikten Modus
<span style="color: rgb(0, 0, 0);">mysql> CREATE TABLE `mytable` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(20) NOT NULL, -> `content` text NOT NULL default '', -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> show tables;<br/>+------------------------------+| Tables_in_test_version |<br/>+------------------------------+| mytable |<br/>+------------------------------+</span>
Erfolgreich ausgeführt
<span style="color: rgb(0, 0, 0);">mysql> CREATE TABLE `mytable` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(20) NOT NULL, -> `content` text NOT NULL default '', -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br/>ERROR 1101 (42000): BLOB/TEXT column 'content' can't have a default value</span>
Ausführung fehlgeschlagen, was darauf hinweist, dass das Inhaltsfeld leer ist vom Typ TEXT und der Standardwert können nicht verwendet werden. Zusammenfassend kann die Verwendung des strengen MySQL-Modus die Daten sicherer und strenger machen, der Nachteil besteht jedoch darin, dass dadurch die Kompatibilität leerer Daten in der Datenbank verringert wird. Es wird empfohlen, dass die Entwicklungsumgebung den strikten Modus verwendet, um die Codequalität und Datengenauigkeit zu verbessern.
Erklärt dieser Artikel den strengen MySQL-Modus? Weitere verwandte Empfehlungen finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Erklärung zur zweispaltigen Datenmethode in der MySQL-Austauschtabelle
Wie man mit PHP eine Zufallsdezimalmethode von 0 bis 1 generiert
Das obige ist der detaillierte Inhalt vonEine Erklärung des strengen MySQL-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!