我有一个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驱动程序中是否有任何选项可以告诉它不抛出异常?
1条答案
按热度按时间r1zk6ea11#
你的问题的答案是:https://bugs.mysql.com/bug.php?id=24546
基本上,添加“jdbCompliantTruncation=false”作为url配置参数