我一直用UTF-8編碼的MySQL數據庫,現在需要能夠存儲4個字節的表情符號,所以我決定從UTF8編碼改爲utf8mb4:utf8mb4在MySQL Workbench和JDBC
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「字符集服務器= UTF8」到「字符集服務器= utf8mb4」
完成這些步驟後,我能夠存儲表情圖案(如圖),但只有當SQL查詢在MySQL控制檯中執行:當我嘗試從MySQL Workbench或Wildfly Web應用程序啓動查詢時,出現此錯誤:
Error Code: 1366. Incorrect string value: '\xF0\x9F\x92\xA2' for column 'SOURCE_CONTEXT' at row 1
我想我需要改變客戶端連接到數據庫的方式,但我不知道如何。我讀過一些關於在JDBC中使用「useUnicode = yes」但不起作用的東西。
${bdpath:3306/bstdb?useUnicode=yes}
編輯: 作爲意見建議,我試着用:
${bdpath:3306/bstdb?characterEncoding=UTF-8}
,但沒有運氣,我收到了同樣的「不正確的字符串值:「\ XF0 \ x9F \ X92 \ xA2'「錯誤。
也試過
${bdpath:3306/bstdb?useUnicode=true&characterEncoding=utf8mb4&}
,但它拒絕囑咐的連接。
關於如何配置MySQL工作臺和/或JDBC/Wildfly的任何想法?
MySQL的版本是5.7.18
MySQL工作臺的版本是6.0.8
JDBC驅動程序版本爲5.1.34
謝謝!
錯過了配置文件部分在我的答案,這是一個爲我學習! –