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

2j4z5cfb  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(410)

我有一个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

我完全可以接受。关键是,如果我直接执行查询,它就会工作(如果我运行,mysql最终会返回一些警告) show warnings ),但如果我在java ee应用程序中运行(在glassfish下运行),这些警告将被视为错误,因此我将得到一个异常(即: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '100 dǵ#$vferv' ).
在这种情况下,jdbc驱动程序中是否有任何选项可以告诉它不抛出异常?

r1zk6ea1

r1zk6ea11#

你的问题的答案是:https://bugs.mysql.com/bug.php?id=24546
基本上,添加“jdbCompliantTruncation=false”作为url配置参数

相关问题