Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC将警告视为数据截断错误_Java_Mysql_Exception_Jdbc_Truncated - Fatal编程技术网

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

Java JDBC将警告视为数据截断错误,java,mysql,exception,jdbc,truncated,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 f

我有一个带有三个字段的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
我完全同意。 关键是,如果我直接执行查询,它会工作(如果我运行
show warnings
,MySQL最终会返回一些警告),但如果我在Java EE应用程序中运行(在glassfish下运行),这些警告会被视为错误,因此我会得到一个异常(即:
com.mysql.jdbc.MysqlDataTruncation:Data truncation:Truncated不正确的双精度值:“100 dǵ#$vferv”


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

您的问题的答案如下:


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

是否尝试重写查询以正确处理数据类型转换?
更新表SET value=CAST(1+CAST(值为CHAR(30))作为CHAR(30))其中ftype='COUNTER';
警告是在sum运算符将varchar隐式转换为unsigned的过程中生成的,我看不出在隐式转换之前将varchar强制转换为char如何解决问题。
 fname  ftype   value
 f1     COUNTER     101
 f2     COUNTER     101