sql >> Database teknologi >  >> RDS >> Mysql

MySQL INSERT uden at skulle angive alle ikke-standardfelter (#1067 - Ugyldig standardværdi for 'tabel')

En af dine servere kører i streng tilstand som standard og den anden ikke. Hvis en server kører i streng tilstand (eller du indstiller den i din forbindelse), og du forsøger at indsætte en NULL værdi i en kolonne defineret som IKKE NULL, får du #1364 fejl. Uden streng tilstand vil din NULL-værdi blive erstattet med tom streng eller 0.

Eksempel:

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. MySQL Workbench - Forward Engineering - Fejl 1005:Kan ikke oprette tabel (fejlnr.:150)

  2. Hvordan indsætter jeg en byte[] i en SQL Server VARBINARY-kolonne

  3. mysql_real_escape_string() fjerner streng fuldstændigt

  4. Udfyldning af en PL/SQL-tabel fra en blok i Oracle D2k Forms