我一直無法將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