Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL INSERT tanpa harus menentukan setiap bidang non-default (#1067 - Nilai default tidak valid untuk 'tabel')

Salah satu server Anda berjalan dalam mode ketat secara default dan yang lainnya tidak. Jika server berjalan dalam mode ketat (atau Anda mengaturnya di koneksi Anda) dan Anda mencoba memasukkan nilai NULL ke dalam kolom yang didefinisikan sebagai NOT NULL, Anda akan mendapatkan #1364 kesalahan. Tanpa mode ketat, nilai NULL Anda akan diganti dengan string kosong atau 0.

Contoh:

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. Python + MySQLdb mengeksekusi banyak

  2. Penggabungan MySQL dan campuran ilegal dari kesalahan collation

  3. Fungsi MySQL LN() – Mengembalikan Logaritma Natural dari suatu Angka

  4. Kesalahan duplikat MySQL dengan ALTER IGNORE TABLE

  5. Urutkan data (urutkan berdasarkan) sebelum dikelompokkan berdasarkan di mysql