JDBC将警告视为数据截断时的错误

时间:2018-01-12 17:49:52

标签: java mysql exception jdbc truncated

我有一个包含三个字段的MySQL表:

fname   varchar(20) 
ftype   varchar(10) 
value   varchar(30) 

你可以看到“value”是一个varchar,但我用它来存储不同类型的值(由用户输入),所以我可以这样做:

UPDATE table SET value = 1 + value WHERE ftype='COUNTER';

它按预期工作,进行隐式转换,然后更新和存储,所以:

 fname  ftype   value   
 f1     COUNTER     100
 f2     COUNTER     100 dǵ#$vferv  <-- this value contains an input error

成为:

 fname  ftype   value
 f1     COUNTER     101
 f2     COUNTER     101

我很满意。 重点是,如果我直接执行查询,它会起作用(如果我运行show warnings,最终MySQL会返回一些警告),但如果我在Java EE应用程序内运行(在glassfish下运行),那么这些警告就会被视为错误,所以我会得到一个例外(即:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '100 dǵ#$vferv')。

JDBC驱动程序中是否有任何选项告诉它在这种情况下不抛出异常?

1 个答案:

答案 0 :(得分:1)

您的问题的答案在这里:https://bugs.mysql.com/bug.php?id=24546

基本上,添加“ jdbcCompliantTruncation = false”作为URL配置参数