2016-07-01 20 views
2

Wir versuchen, Emoji in unserer Datenbank MySQL 5.6 mit JOOQ zu speichern und zu lesen. Die Datenbank, Tabelle und Spalte verwenden den Zeichensatz utf8mb4 und die Sortierfolge utf8mb4_unicode_ci. Mit MySQL Workbench kann ich Emojis erstellen und auswählen. Also sollte die Datenbank bereit sein.JOOQ emoji (utf8mb4) Unterstützung

Aber wenn ich ein Emoji mit jOOQ speichern erhalte ich: Falschen Wert string: '\ xF0 \ x9F \ x98 \ x80' für Spalte 'test' in Zeile 1SQL

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

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

Suchen de Emoji I gespeichert mit MySQL Workbench funktioniert gut.

Antwort

1

Um utf8mb4 in der Anwendung zu verwenden, stellen Sie sicher, dass Sie es auf der Serverebene oder vor der Abfrage setzen.

Es gibt zwei Möglichkeiten, es zu tun:

  1. Server-Ebene: in character_set_server = utf8mb4 my.cnf oder "set global character_set_server = utf8mb4"

  2. Bevor Abfrage ausgeführt wird: „Set-Namen utf8mb4 "

+0

Wissen Sie, wie man das mit JOOQ macht? Das Problem ist, dass ich den Dienst auf einem eigenen Schreibserver austrage. – user1482309

+1

Nicht sicher, wie es mit JOOQ speziell zu tun ist. Wenn Sie jedoch ein mysql root-Passwort haben, können Sie den Zeichensatz für den Server global festlegen: "set global character_set_server = utf8mb4" –