Heim  >  Artikel  >  Datenbank  >  Eine Erklärung des strengen MySQL-Modus

Eine Erklärung des strengen MySQL-Modus

jacklove
jackloveOriginal
2018-06-09 09:47:442172Durchsuche

1. So aktivieren und deaktivieren Sie den strengen 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

Unterstützt das Einfügen von Nullwerten in Nicht-Null-Felder nicht

  • Nein. Unterstützt das Einfügen von „Werten“ für sich selbst erhöhende Felder.

  • Unterstützt keine Textfelder mit Standardwerten

  • 3. Beispiel:

  • Erstellen Sie eine Datentabelle, um das Testen zu erleichtern

<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(&#39;programmer&#39;);<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(&#39;programmer&#39;);ERROR 1364 (HY000): Field &#39;name&#39; doesn&#39;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(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<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

Im strengen Modus ausgeführt

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>ERROR 1366 (HY000): Incorrect integer value: &#39;&#39; for column &#39;id&#39; 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,&#39;fdipzone&#39;,&#39;programmer&#39;);<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 &#39;&#39;,    ->  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

Im strengen Modus ausführen

<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 &#39;&#39;,    ->  PRIMARY KEY (`id`)    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br/>ERROR 1101 (42000): BLOB/TEXT column &#39;content&#39; can&#39;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 von Problemen, die Anfänger leicht übersehen, wenn sie „Explode“ zum Teilen von Zeichenfolgen in PHP verwenden

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn