AmazonのRDSでホストされているMySQLデータベースにGrailsアプリケーションを接続する際に問題が発生しました。それはうまく働いていた、私はロシアのユーザーが私のフォームにキリル文字を入力していたことに気付きました。その結果、MySQLデータベースはデータを???????と表示しました。Grailsを使用してUTF-8 MySQLデータベースに接続
だから、Iまし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取得:無効なストリームヘッダ:JAVでC2ACC3AD をa.io.ObjectInputStream.readStreamHeader java.io.ObjectInputStreamで(ObjectInputStream.java:800) 。(ObjectInputStream.java:297)私は他でこれを解像度と説明を見てきました
一つの可能性フレームワークはデータベース接続を実行することです
SET NAMES UTF8
データベースに接続した直後です。 Grailsがデータベース接続プロセスを処理するので、Grailsにこれを強制する方法はわかりません。何か案は?
更新されたJDBC URLが必要なものでなければなりません。ある時点でいくつかのデータがデータベース内のオブジェクトとしてシリアライズされ、そのデータがもはや有効ではないように思われる。この例外は、特定のドメインクラスのクエリに対してのみ発生しますか? –
はい。それはそれだった。私はシリアライズされたハッシュマップとして少しのメタデータを格納していたドメインクラスを持っていました。すべてのデータ列をnullに設定すると、問題は解決されました。今、私はちょうど良いものでそのメタデータをrepalceする方法を理解している...ありがとう! –
あなた自身の質問に答えて、それを止めるには「unaswered」と表示してください。 – Danack