2016-07-01 19 views
2

私たちはJOOQを使って私たちのMySQL 5.6データベースに絵文字を保存しようとしています。 データベース、テーブル、および列は、文字セットutf8mb4および照合utf8mb4_unicode_ciを使用しています。 MySQL Workbenchでは、絵文字を作成して選択することができます。データベースは準備ができているはずです。私はJOOQで絵文字を保存するときJOOQ絵文字(utf8mb4)のサポート

は、しかし、私は得る: 不正な文字列値: '\ XF0 \ x9F \ x98 \ X80' 列 'テスト' の行で1SQL

DSLContext dslContext = DSL.using(dataSource, SQLDialect.MYSQL); 

dslContext.insertInto(table) 
       .set(testRecord) 
       .returning() 
       .fetchOne(); 

取得私が保存され絵文字エンMySQL Workbenchはうまく動作します。

答えて

1

アプリケーションでutf8mb4を使用するには、サーバレベルで設定するか、クエリを実行する前に設定してください。

それを行うための2通りの方法があります。

  1. Serverレベル:my.cnfファイルまたはクエリを実行する前に

  2. "グローバルcharacter_set_server = utf8mb4を設定" するcharacter_set_server = utf8mb4を追加:「名前を設定するにはutf8mb4 "

+0

あなたはJOOQでこれを行う方法を知っていますか?問題は私が自分のライティングサーバーでサービスを実行していることです。 – user1482309

+1

JOOQを使って具体的に行う方法がわかりません。しかし、mysqlのルートパスワードを持っている場合は、サーバの文字セットをグローバルに設定することができます: "set global character_set_server = utf8mb4" –