我在C#和JAVA上玩测试客户端,想要执行一个简单的查询:* select * from data; *
mysql 5.7,connector / j 5.1.39,connector / .net 6.9.9。数据表分别有ID和VAL列 - int和text。 db模式,表和文本列使用utf8排序规则,但奇怪的是我无法让两个客户端同步接收查询结果。更改排序规则会导致c#或java失败 - 尝试使用utf8mb4,latin1和更多随机选择。
如果C#DataReader有记录,则JAVA ResultSet为空,反之亦然。 当C#失败时抛出: 尝试读取结果集时遇到致命错误 内部异常: 数据包的预期结束 。如果java失败,它只有一个空的ResultSet
我尝试更改不同的排序规则和charset / characterEncoding设置,试错法引导我到这里:
如果我对数据库和以下C#连接字符串使用utf8排序规则:
server = x.x.x.x; user = mydbuser; database = mydb; port = 3306; password = mypassword; Character Set = utf8
和这个Java连接字符串
JDBC:MySQL的://x.x.x.x/mydb用户= mydbuser&安培;密码=输入mypassword&安培;的characterEncoding = ASCII
这两个应用都显示结果 - 即使VAL列包含utf(西里尔字母)字符,java客户端也会正确显示ascii参数。如果characterEncoding设置为utf8,则ResultSet再次为空。
我无法解决为什么会这样做。