sql >> Database >  >> RDS >> Mysql

MySQL INSERT zonder dat u elk niet-standaardveld hoeft op te geven (#1067 - Ongeldige standaardwaarde voor 'tabel')

Een van uw servers draait standaard in de strikte modus en de andere niet. Als een server in de strikte modus draait (of u stelt deze in in uw verbinding) en u probeert een NULL-waarde in te voegen in een kolom die is gedefinieerd als NIET NULL, krijgt u #1364 fout. Zonder strikte modus wordt uw NULL-waarde vervangen door een lege tekenreeks of 0.

Voorbeeld:

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 


  1. PostgreSQL:export van resulterende gegevens van SQL-query naar Excel/CSV

  2. Java SQL Server 2012 Kan databasefout niet openen

  3. combineer twee select-instructie in twee kolommen?

  4. MySQL - invoegen als het nog niet bestaat