1292:日期时间值不正确:第 1 行的列为“”

问题描述 投票:0回答:4
我正在尝试将数据从 Excel 工作表加载到 Windows 8.1 上的 MYSQL 5.6 上的下表,但收到“日期时间值不正确:”错误。

术语日期列是 DATETIME 数据类型,并且数据在我试图插入到表中的 Excel 工作表中具有空值。

我做了一些研究,发现问题出在 SQL 严格模式上。但我无法弄清楚如何禁用或修改 SQL 严格模式。

事实上我尝试过这个

SET SESSION sql_mode='ALLOW_INVALID_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 sql datetime sql-insert sql-mode
4个回答
6
投票
在 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)
    

6
投票
我设法使用命令解决了类似的问题:

mysql> set session sql_mode='';

mysql> set global sql_mode='';

在 mysql 提示符下。


3
投票
尝试将 Excel 中的空值替换为 0000-00-00。我没有在 Excel 中尝试过此操作,但它适用于 csv 文件。导入


0
投票
这在旧版本的 mysql 中是不同的。迁移后我也遇到了这个问题。使用 null 而不是 '' 解决了 i

© www.soinside.com 2019 - 2024. All rights reserved.