sql >> Databáze >  >> RDS >> Mysql

INSERT MySQL bez nutnosti zadávat každé jiné než výchozí pole (#1067 – Neplatná výchozí hodnota pro „tabulku“)

Jeden z vašich serverů ve výchozím nastavení běží v přísném režimu a druhý ne. Pokud server běží v přísném režimu (nebo si to nastavíte ve svém připojení) a pokusíte se vložit hodnotu NULL do sloupce definovaného jako NOT NULL, dostanete Chyba #1364. Bez přísného režimu bude vaše hodnota NULL nahrazena prázdným řetězcem nebo 0.

Příklad:

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. SQL:Získejte produkty z kategorie, ale také musí být v jiné sadě kategorií

  2. Převod řetězce data/času na unixové časové razítko v MySQL

  3. Přehled nových uložených procedur v PostgreSQL 11

  4. SQL dotaz s MySQL