Incorrect datetime value: '' for column Mysql5.6 中datetime 型別欄位的插入問題
在5.0.45-community-nt-log中能正常執行的SQL,在5.6.21中不正常。
1. 1檢視資料庫版本
mysql> select database(), version();
+------------+-------------------------+
| database() | version() |
+------------+-------------------------+
| test | 5.0.45-community-nt-log
|
+------------+-------------------------+
1 row in set
1.2.建立表test_datatime,指定sendTime列為datatime型別,預設為空。
mysql> CREATE TABLE `test_datatime` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`sendTime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Query OK, 0 rows affected
1.3. 嘗試插入'' 到sendTime列,在mysql5.0.45中SQL能正常執行。
mysql> INSERT INTO `test_datatime` (`id`, `sendTime`) VALUES (5, now());
Query OK, 1 row affected
mysql> INSERT INTO `test_datatime` (`id`, `sendTime`) VALUES (6,'' );
Query OK, 1 row affected
mysql> select * from test_datatime;
+----+---------------------+
| id | sendTime |
+----+---------------------+
| 5 | 2014-10-30 16:55:02 |
| 6 | 0000-00-00 00:00:00 |
+----+---------------------+
2 rows in set
2. 1檢視資料庫版本
mysql> select database(), version();
+------------+-------------------------------------------+
| database() | version() |
+------------+-------------------------------------------+
| lw | 5.6.21-enterprise-commercial-advanced-log |
+------------+-------------------------------------------+
1 row in set
2.2.建立表test_datatime,指定sendTime列為datatime型別,預設為空。
mysql> CREATE TABLE `test_datatime` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`sendTime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Query OK, 0 rows affected
2.3. 嘗試插入'' 到sendTime列,在mysql5.6.21中SQL報錯1292 - Incorrect datetime value
mysql> INSERT INTO `test_datatime` (`id`, `sendTime`) VALUES (5, now());
Query OK, 1 row affected
mysql> INSERT INTO `test_datatime` (`id`, `sendTime`) VALUES (6,'' );
1292 - Incorrect datetime value: '' for column 'sendTime' at row 1
mysql> select * from test_datatime;
+----+---------------------+
| id | sendTime |
+----+---------------------+
| 5 | 2014-10-30 16:04:01 |
+----+---------------------+
1 row in set
由於這種改變,當Mysql由低版本升級為較高的版本時,要做全面的測試。同時專案中的驅動包,也要同步更新。