术语日期列是 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
''
(空字符串)与
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)
mysql> set session sql_mode='';
和
mysql> set global sql_mode='';
在 mysql 提示符下。