首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 字符集 utf8 升級 utf8mb4 避坑指南

     編輯:MySQL 綜合教學

MySQL 字符集 utf8 升級 utf8mb4 避坑指南

遷移數據報 Incorrect string value: '\xF0\x9F\x98\x8A',因 utf8 只支援 3 字節,Emoji 需 4 字節,必須升級 utf8mb4。

關鍵錯誤

僅修改 character_set_server=utf8mb4 重啟失敗(錯誤 1067),日誌無輸出。實際需同步修改 collation_server。

正確配置


[mysql]
default-character-set=utf8mb4
init_connect='SET NAMES utf8mb4'

[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_bin

完整升級清單

  1. my.cnf 修改上述配置
  2. 重啟驗證變量
  3. 庫/表/欄位轉換:
    
    ALTER DATABASE db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
    ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    -- 大表用 pt-online-schema-change 避免長時間鎖表
    
  4. 應用端 JDBC URL 加 characterEncoding=utf8mb4
  5. 索引長度:VARCHAR(191) 或開啟 innodb_large_prefix + ROW_FORMAT=DYNAMIC
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved