MySQL Connector / J v5.x升级:查询现在返回byte []而不是String

时间:2015-01-20 10:35:50

标签: mysql sql jdbc casting

我刚刚从

更新了我的应用程序的JDBC驱动程序
mysql-connector-java-3.1.12-bin.jar 

mysql-connector-java-5.1.34-bin.jar.

使用v3.x驱动程序,这种查询有效:

select concat("<a href>", count(sakila.payment.payment_id), "</a>") 
from sakila.payment;

但现在使用新的v5.x驱动程序,查询仅适用于强制转换()。

select cast(concat("<a href>", count(sakila.payment.payment_id), "</a>")
as char(30)) from sakila.payment;

我可以更改MySQL数据库中的任何属性吗? 我不想改变这样的数百个查询。

1 个答案:

答案 0 :(得分:2)

我怀疑你必须咬紧牙关并更新你的代码。有一个错误报告here似乎与您的情况相符,并且该错误报告的状态为#34;赢得修复&#34;。开发商的回应([2007年4月4日17:43] Reggie Burnett)是:

  

这是我们无法解决的问题。让我解释一下。

     

MySQL在报告结果是否为二进制时有几个问题。这在5.0之前的MySQL版本上非常坏,但即使在今天它仍然是一个问题。您报告的SQL由MySQL显示为二进制,但显然不是。连接器无法确定。在5.0.5和5.0.6中,我们尝试做出最好的猜测&#34;但是这个代码引起了比它解决的更多的问题,所以在5.0.7中我们推出了它。您的SQL将使用5.0.7正确返回字符串,但这并不意味着它已修复。实际上,它返回字符串是因为我们忽略了二进制标志,这意味着你可以生成应该返回二进制的有效SQL,5.0.7将返回字符串。

     

在服务器修复之前,连接器只能始终做正确的事情。我希望这有点清除它。