Java可更新结果集异常在英文Windows中使用UTF-8数据
我面临一个奇怪的问题。当我尝试更新或删除包含非英语utf字符的可更新结果集中的行时,出现异常。然而,插入很好Java可更新结果集异常在英文Windows中使用UTF-8数据,java,mysql,unicode,utf-8,resultset,Java,Mysql,Unicode,Utf 8,Resultset,我面临一个奇怪的问题。当我尝试更新或删除包含非英语utf字符的可更新结果集中的行时,出现异常。然而,插入很好 java.sql.SQLException:对已删除或主键已更改的行调用refreshRow() 最奇怪的事情是: 只有在windows中运行编译的jar时,才会发生此错误 然而,在Linux中运行的同一个jar对于相同的数据运行良好,没有问题 在IDE中运行相同的项目在Windows中也可以正常运行 其他有帮助的信息 操作系统:Windows XP(安装了英语和非英语语言支持)
java.sql.SQLException:对已删除或主键已更改的行调用refreshRow()
最奇怪的事情是:
操作系统:Windows XP(安装了英语和非英语语言支持) DB:MySQL,编码utf8,排序规则-utf8\u常规\u ci IDE:Netbeans 6.9.1 JDK:6更新23 接头/J 5.1.15(只需切换以检查其是否工作,但版本14也存在相同问题) 连接字符串包括:“useUnicode=true”和“characterEncoding=utf8” 最初认为IDE可以做些什么,所以在netbeans论坛上发布了这条消息 还交叉张贴在mysql JDBC论坛上,希望找到一些答案 但是在那里找不到任何帮助
到目前为止,问题似乎出在Windows上。也许这只是个小问题,但想不出任何解决办法 需要一些建议吗 谢谢和问候
Deepak您的IDE似乎覆盖了从命令行运行应用程序时获得的默认编码。如果检查IDE使用的实际JVM参数(通常在IDE的输出窗口中可用),您可能会看到包含文件编码参数,如下所示:
-Dfile.encoding="UTF-8"
System.out.println(System.getProperty("file.encoding"));
尝试用这个JVM参数启动应用程序,看看它是否有什么不同,如果没有,请比较从IDE和在命令行上运行时使用的实际编码,如下所示:
-Dfile.encoding="UTF-8"
System.out.println(System.getProperty("file.encoding"));
我也有同样的问题并解决了。我不明白为什么会发生这种情况,但这是在组合mysql表的主键时造成的。在我的数据库中,有许多表组合了主键和其他具有自动增量的表。我可能注意到这个问题并没有出现在具有自动递增主键的表中