我一直无法将Grails应用程序连接到托管在Amazon RDS上的MySQL数据库。它运行良好,我发现俄罗斯的用户将西里尔字符输入到我的表单中,导致MySQL数据库显示数据为????????。使用Grails连接到UTF-8 MySQL数据库
所以,我converted the data in the database from Latin1 to UTF-8.(为什么啊,为什么没有UTF-8的默认?)
我已经添加了 “?了useUnicode = YES &的characterEncoding = UTF-8” 我的JDBC结束连接字符串:
jdbc:mysql://myserver.amazonaws.com/mydatabase?useUnicode=yes&characterEncoding=UTF-8
现在,当Grails的连接到我的数据库,我得到的错误
java.io.StreamCorruptedException:无效的流头:C2ACC3AD 在JAV a.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:800) 在java.io.ObjectInputStream中。(ObjectInputStream.java:297)是我见过描述为解决这一与其他
一种可能性框架将运行数据库连接
SET NAMES UTF8
连接到数据库后立即连接。但是,我不知道如何强制Grails执行此操作,因为Grails在底层处理其数据库连接过程。有任何想法吗?
更新后的JDBC URL应该是您所需要的。它看起来像某些数据在某些时候被序列化为数据库中的一个对象,并且该数据现在不再有效。这种异常只发生在某个域类的查询上吗? – 2012-02-13 18:09:37
是的。就是这样。我有一个域类,它将一些元数据存储为一个序列化的散列图。一旦我将所有数据列设置为空,问题就解决了。现在我只想弄清楚如何用更好的东西来重新表示元数据......谢谢! – 2012-02-13 18:21:16
请回答你自己的问题,然后停止显示为'未回答'。 – Danack 2013-03-18 07:38:06