更新我的mysql jdbc jar后,我的日期插入不再有效

时间:2014-06-19 13:55:54

标签: mysql jdbc

我刚刚更新了我的jdbc驱动程序,我的一些插入和更新不再有效。我确实发现,如果我把它放在我的etc / my.cnf中,它会帮助一些。

sql_mode=ALLOW_INVALID_DATES

但是我仍然遇到允许null

的日期和时间字段的问题

例如,当我尝试插入

insert into calendar2 (`id`,  `userID`,  `title`,  `event_desc`,  `catid`,
                       `startDate`,  `startTime`,  `endDate`,  `endTime`,
                       `allDayEvent`,  `url`,  `image`,  `icon`,  `recurrence`,
                       `occuranceID`,  `endRecurDate`) 
               values ( '0' ,'965' ,'asd' ,'asd' ,'-1' ,'2014-06-11' 
                         ,'','','','1' ,'' ,'' ,'' ,'' ,'0' ,'' ) 

这曾经工作过。现在我得到了错误

Data truncation: Incorrect time value: '' for column 'startTime' at row 1

这是遗留代码,并生成了sql。我无法将其更改为参数化

字段在DB中定义为

`startDate` DATE NULL DEFAULT NULL,
`startTime` TIME NULL DEFAULT NULL,
`endDate` DATE NULL DEFAULT NULL,
`endTime` TIME NULL DEFAULT NULL,

在我的jdbc连接字符串中我有

jdbc:mysql://HOST:3306/DB?zeroDateTimeBehavior=convertToNull

感谢您的帮助或想法

1 个答案:

答案 0 :(得分:0)

fyi终于找到了答案 在http://www.ccs.neu.edu/home/kathleen/classes/cs3200/connector-j.pdf

找到了它

我需要设置这些变量

emptyStringsConvertToZero=true
jdbcCompliantTruncation=false
noDatetimeStringSync=true
nullCatalogMeansCurrent=true
nullNamePatternMatchesAll=true
transformedBitIsBoolean=false
dontTrackOpenResources=true
zeroDateTimeBehavior=convertToNull
useServerPrepStmts=false
autoClosePStmtStreams=true
processEscapeCodesForPrepStmts=false
useFastDateParsing=false
populateInsertRowWithDefaultValues=false
useDirectRowUnpack=false