Mysql 1292:日期时间值不正确:'';对于第1行的列

Mysql 1292:日期时间值不正确:'';对于第1行的列,mysql,sql,datetime,sql-insert,sql-mode,Mysql,Sql,Datetime,Sql Insert,Sql Mode,我试图在Windows8.1上的MYSQL 5.6上将excel工作表中的数据加载到下表中,得到“不正确的datetime值:”错误 Term date列是DATETIME数据类型,数据在excel工作表中有空值,我正试图将其插入表中 我做了一些研究,发现问题在于SQL严格模式。但是我不知道如何禁用或修改SQL严格模式 事实上,我尝试了这个设置会话sql\u mode='ALLOW\u INVALID\u DATES',但没有成功 有人说在安装目录中编辑my.ini文件会有所帮助,但我在安装目录

我试图在Windows8.1上的MYSQL 5.6上将excel工作表中的数据加载到下表中,得到“不正确的datetime值:”错误

Term date列是DATETIME数据类型,数据在excel工作表中有空值,我正试图将其插入表中

我做了一些研究,发现问题在于SQL严格模式。但是我不知道如何禁用或修改SQL严格模式

事实上,我尝试了这个
设置会话sql\u mode='ALLOW\u INVALID\u DATES'
,但没有成功

有人说在安装目录中编辑my.ini文件会有所帮助,但我在安装目录中找不到它

谁能帮我解决这个问题

create table EMPLOYEE(EMP_ID integer(10),
EMP_NAME char(25),
SALARY integer(25),
START_DATE datetime,
TERM_DATE datetime DEFAULT '1900-01-01',
PRIMARY KEY (EMP_ID));
错误消息:

15:23:08    INSERT INTO `mith`.`EMPLOYEE` (`EMP_ID`, `EMP_NAME`, `SALARY`, `START_DATE`, `TERM_DATE`) VALUES ('26', 'Will Banker', '90000', '00:00.0', '')  1292: Incorrect datetime value: '' for column 'TERM_DATE' at row 1  
在MySQL中,
'
(空字符串)不同于
null
。如果需要
null
值,则应使用显式
null

INSERT INTO `mith`.`EMPLOYEE` 
(`EMP_ID`, `EMP_NAME`, `SALARY`, `START_DATE`, `TERM_DATE`)
VALUES ('26', 'Will Banker', '90000', '00:00.0', null)

尝试用0000-00-00替换Excel中的空值。我没有用Excel尝试过这个,但它适用于csv文件。导入

我使用以下命令解决了类似的问题:

mysql> set session sql_mode='';


在mysql提示符中。

为什么要将日期设置为
00:00.0
而不是实际日期?我尝试从中加载数据的excel具有日期值,但mysql导入没有将这些值作为日期值。我同意。但我实际上并没有执行insert语句。我正在使用MYSQL导入数据选项从excel加载数据。因此,它将所有空值都选为“”。这与旧版本的mysql不同。我在迁移后也遇到了这种情况。用
null
代替
'
解决了这个问题。
mysql> set global sql_mode='';