java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1
原因:Emoji 為 4 字節 UTF-8 字符(Unicode 輔助平面),MySQL utf8 僅支援 3 字節,導致寫入失敗。
ALTER TABLE UGC_REVIEW_CONTENT MODIFY `CONTENT` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE UGC_REVIEW_CONTENT CHARSET = utf8mb4;
ALTER DATABASE test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
[mysqld] character-set-server = utf8mb4 init_connect = 'SET NAMES utf8mb4' [client] default-character-set = utf8mb4
systemctl restart mysqldSHOW VARIABLES LIKE 'character_set_%'; -- 關鍵項均為 utf8mb4 即成功
utf8mb4 是真正的 UTF-8,支援 4 字節字符(Emoji、生僻字)SET NAMES utf8mb4(JDBC URL 加 characterEncoding=utf8mb4)my.cnf 會導致新連接仍用 utf8,插入仍報錯ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 會自動轉碼utf8mb4 單字符 4 字節,聯合索引長度可能超限,需縮短前綴長度