我有一个以下查询,它使用java将数据插入到mysql中。
它给了我这个错误
Data truncation: Incorrect datetime value: 'null' for column 'lastEventTime' at row 1
lastEventTime
设置为可为空的datetime
类型,默认为NULL
。不幸的是,当我在phpmyadmin中运行相同的查询时,它接受并将数据插入到表中。那么java的解决方案是什么?
我的零件代码如下。
答案 0 :(得分:1)
单引号('
)表示字符串文字。在这里,您并不是说您插入字符串'null'
,而是实际的null
值 - 只需删除引号:
INSERT INTO tblDetails
SET eID=1010,entID=2,tID=65,eDateTime='2014-12-04 14:34:44',lastEventTime=null
此外,除非lsatEventTime
具有不合需要的默认值,否则您可以完全删除对它的引用,并让数据库使用默认值(null
):
INSERT INTO tblDetails
SET eID=1010,entID=2,tID=65,eDateTime='2014-12-04 14:34:44'
编辑:
要回答评论中提出的问题,即使在动态构建insert
语句时也可以这样做。请按以下一行:
"',lastEventTime='"+rs10d.getString("lastEventTime")+"'";
...并添加一些逻辑来检查null
s:
"',lastEventTime=" + (rs10d.getString("lastEventTime") == null ?
"null" :
"'"+rs10d.getString("lastEventTime")+"'");