SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
SHOW CHARSET;
SHOW COLLATION;
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# init_connect='SET NAMES utf8mb4' # 非超級用戶自動執行
修改後必須重啟 MySQL 服務。
SET NAMES utf8mb4; -- 等同於下面三句
SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;
-- 進階個別設定
SET character_set_database = utf8mb4;
SET character_set_server = utf8mb4; -- 需 SUPER 權限
SET collation_connection = utf8mb4_unicode_ci;
-- 建立資料庫指定
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改資料庫預設 (不影響既有表)
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改資料表預設 (不轉換既有欄位)
ALTER TABLE tbl DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 轉換資料表含所有字串欄位 (資料重寫,大表慎用)
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改單一欄位
ALTER TABLE tbl CHANGE col col VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SHOW CREATE DATABASE db_name;
SHOW CREATE TABLE tbl_name;
SHOW FULL COLUMNS FROM tbl_name;
character_set_client → character_set_connectioncharacter_set_servercharacter_set_resultsmy.cnf 的 default-character-set 僅影響 mysql 命令列客戶端,不影響 JDBC/ODBC/PHP 等 libmysqlclient 應用UPPER()) 在內部操作字符集執行,不受連線字符集影響utf8mb4_unicode_ci (UCA 標準排序) vs utf8mb4_general_ci (舊版簡易排序),推薦前者