Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL INSERT без да се налага да посочвате всяко поле, което не е по подразбиране (#1067 - Невалидна стойност по подразбиране за 'таблица')

Един от вашите сървъри работи в строг режим по подразбиране, а другият не. Ако сървърът работи в строг режим (или го зададете във вашата връзка) и се опитате да вмъкнете стойност NULL в колона, дефинирана като NOT NULL, ще получите #1364 грешка. Без строг режим вашата стойност NULL ще бъде заменена с празен низ или 0.

Пример:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Групирайте страници от една колона

  2. Отговорът на ajax данни винаги е 0 в php mysql

  3. Вмъкнете данни в таблицата наведнъж, които се извличат от командата за избор на mySQL

  4. MYSQL - Изтриване на заявка с Join

  5. Искам тригер за ИЗТРИВАНЕ от 2 таблици в MySQL