Mysql
MySQL 的最佳通用字元集和排序規則
目前,每當我創建一個新的 MySQL 數據庫時,我使用 utf8mb4 作為字元集,使用 utf8mb4_unicode_520_ci 作為排序規則,例如:
CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
MySQL 是否有更新/升級的通用排序規則或字元集?
例如,如果有一個排序規則取代了 utf8mb4_unicode_520_ci,比如 utf8mb4_unicode_800_ci 或類似的東西?
謝謝你的幫助。
對於任何版本的 MySQL 或 MariaDB,使用
utf8mb4
其預設的COLLATION
. (嗯,這在 5.5.3 之前是不可用的。)0900 指的是 Unicode 的 9.00。
520 指的是 Unicode 的 5.20。
沒有數字是指 Unicode 的 4.00。
(數字越大“越好”。)
對於 postal_code、country_code、十六進製字元串、雜湊等列,請考慮使用
CHARACTER SET ASCII
和COLLATE ascii_general_ci
來獲得大小寫折疊。對於其他一些,例如 BASE64,使用,
COLLATE ascii_bin
因為大小寫折疊將是“錯誤的”。請注意,
打開的設置
CREATE DATABASE
是和 儲存常式的預設設置。 on的設置是該表中列的預設設置。 連接設置對於使事情“正確”也非常重要。CREATE TABLE
CREATE TABLE
我會回答我自己的問題,希望它可以幫助將來的人。通過以下查詢,我能夠弄清楚我的伺服器上可用的最新排序規則是什麼:
SELECT COLLATION_NAME, CHARACTER_SET_NAME FROM information_schema.COLLATIONS WHERE ( CHARACTER_SET_NAME = 'utf8mb4' ) AND ( COLLATION_NAME LIKE '%utf8mb4_unicode%' ) ORDER BY COLLATION_NAME;
輸出:
+-------------------------------+-----------------------+ | COLLATION_NAME | CHARACTER_SET_NAME | +-------------------------------+-----------------------+ | utf8mb4_unicode_520_ci | utf8mb4 | | utf8mb4_unicode_520_nopad_ci | utf8mb4 | | utf8mb4_unicode_ci | utf8mb4 | | utf8mb4_unicode_nopad_ci | utf8mb4 | +-------------------------------+-----------------------+
有了可用的選擇,我選擇了:
utf8mb4_unicode_520_ci
我想確保沒有更新的排序規則可用,例如 utf8mb4_unicode_800_ci。在我的系統上,utf8mb4_unicode_520_ci 是最新的。