Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL INSERT bez konieczności określania każdego pola innego niż domyślne (nr 1067 — Nieprawidłowa wartość domyślna dla „tabeli”)

Jeden z twoich serwerów domyślnie działa w trybie ścisłym, a drugi nie. Jeśli serwer działa w trybie ścisłym (lub ustawisz go w swoim połączeniu) i spróbujesz wstawić wartość NULL do kolumny zdefiniowanej jako NOT NULL, otrzymasz #1364 błąd. Bez trybu ścisłego twoja wartość NULL zostanie zastąpiona pustym ciągiem lub 0.

Przykład:

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. odczytaj BLOB z mysql za pomocą php PDO

  2. MySQL Znajdź całkowitą liczbę postów na użytkownika

  3. Jak uzyskać dane na każdą godzinę w MySQL?

  4. jaka jest różnica między „zmień nazwę tabeli” a „zmień nazwę tabeli”?

  5. Jak nadać każdemu zarejestrowanemu użytkownikowi własny adres URL za pomocą PHP?