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

4

我刚刚更新了我的应用程序的JDBC驱动程序,从

mysql-connector-java-3.1.12-bin.jar 

to

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驱动程序,查询只能使用cast()函数才能正常工作。
select cast(concat("<a href>", count(sakila.payment.payment_id), "</a>")
as char(30)) from sakila.payment;

MySQL数据库中是否有任何属性可以更改? 我不想修改那么多查询。

1个回答

2
我怀疑你需要咬紧牙关并更新你的代码。这里有一个bug报告,看起来符合你的情况,而该bug报告的状态是“不会修复”。开发人员的回复([2007年4月4日17:43] Reggie Burnett)是:
这是一些我们无法真正修复的问题。让我来解释一下。
MySQL在报告结果是否为二进制时存在几个问题。这在MySQL 5.0之前的版本中非常严重,但即使今天仍然存在问题。你报告的SQL被MySQL返回为二进制,而它显然不是二进制。连接器无法确定结果类型。在5.0.5和5.0.6版本中,我们尝试做出“最佳猜测”,但那段代码引起了更多问题,所以在5.0.7中我们将其撤回了。你的SQL将在5.0.7中正确地返回字符串,但这并不意味着它已经被修复了。事实上,它返回字符串是因为我们忽略了二进制标志,这意味着你可能会生成有效的SQL应该返回二进制,但5.0.7将返回字符串。
在服务器被修复之前,连接器不能总是做正确的事情。希望这能稍微解释清楚一些问题。

谢谢你的帮助。现在我可以停止搜索了。 - DenisK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接