[英]utf8mb4 in MySQL Workbench and JDBC
我一直在使用UTF-8編碼的MySQL數據庫,現在需要能夠存儲4字節的表情符號,所以我決定從utf8編碼更改為utf8mb4:
ALTER DATABASE bstdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE HISTORY CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE HISTORY CHANGE SOURCE_CONTEXT SOURCE_CONTEXT VARCHAR(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
並將mysql.conf.d“character-set-server = utf8”更改為“character-set-server = utf8mb4”
在這些步驟之后,我能夠存儲表情符號(如💢),但只有在MySQL控制台中執行SQL查詢時:當我嘗試從MySQL Workbench或Wildfly webapp啟動查詢時,我收到此錯誤:
錯誤代碼:1366。字符串值不正確:第1行第'SOURCE_CONTEXT'列的'\\ xF0 \\ x9F \\ x92 \\ xA2'
我假設我需要改變客戶端連接到數據庫的方式,但我不清楚如何。 我已經閱讀了在JDBC中使用“useUnicode = yes”的內容,但是沒有用。
$ {bdpath:3306 / bstdb了useUnicode = YES}
編輯 :正如評論中所建議的,我試過:
$ {bdpath:3306 / bstdb的characterEncoding = UTF-8}
但沒有運氣,我得到相同的“不正確的字符串值:'\\ xF0 \\ x9F \\ x92 \\ xA2'”錯誤。
也試過了
$ {bdpath:3306 / bstdb了useUnicode =真和characterEncoding = utf8mb4&}?
但它拒絕建立聯系。
有關如何配置MySQL工作台和/或JDBC / Wildfly的任何想法?
MySQL版本是5.7.18
MySQL WorkBench版本是6.0.8
JDBC驅動程序版本是5.1.34
謝謝!
最后,它的工作原理。 存儲過程存在問題,遷移后仍然是utf8而不是utf8mb4。 這是一個兩步解決方案。
[client] default-character-set = utf8mb4
[mysql] default-character-set = utf8mb4
[mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
在mysql中執行:
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
刪除涉及的程序,並再次創建它們。 他們將在utf8mb4。 可以檢查
SHOW PROCEDURE STATUS,其名稱為LIKE'procedate_name';
對jdbc url使用characterEncoding=utf8
jdbc:mysql://x.x.x.x:3306/db?useUnicode=true&characterEncoding=utf8
還要檢查是否已將MySQL配置為使用utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
看到這里
您可以按照MySQL可用的文檔來解決您的問題。 這是您可以參考的MySQL文檔 。
基本上,可以根據上面提到的文檔更改ALTER TABLE
腳本,然后可以在連接字符串中使用以下參數以使更改生效。
jdbc:mysql://localhost/yourdatabasename?useUnicode=true&characterEncoding=UTF-8
在設置字符集和編碼更改后,請不要忘記重新啟動MySQL服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.