Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL INSERT, ohne jedes Nicht-Standardfeld angeben zu müssen (#1067 - Ungültiger Standardwert für 'table')

Einer Ihrer Server läuft standardmäßig im strikten Modus und der andere nicht. Wenn ein Server im strikten Modus läuft (oder Sie ihn in Ihrer Verbindung einstellen) und Sie versuchen, einen NULL-Wert in eine Spalte einzufügen, die als NOT NULL definiert ist, erhalten Sie Fehler #1364. Ohne strikten Modus wird Ihr NULL-Wert durch eine leere Zeichenfolge oder 0 ersetzt.

Beispiel:

CREATE TABLE `test_tbl` (
 `id` int(11) NOT NULL,
 `someint` int(11) NOT NULL,
 `sometext` varchar(255) NOT NULL,
 `somedate` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

SET sql_mode = '';
INSERT INTO test_tbl(id) VALUES(1);
SELECT * FROM test_tbl;
+----+---------+----------+---------------------+
| id | someint | sometext | somedate            |
+----+---------+----------+---------------------+
|  1 |       0 |          | 0000-00-00 00:00:00 |
+----+---------+----------+---------------------+
SET sql_mode = 'STRICT_ALL_TABLES';
INSERT INTO test_tbl(id) VALUES(2);
#1364 - Field 'someint' doesn't have a default value