Pet*_*Wal 6 mariadb collation character-set mariadb-10.3
在不指定字符集或排序规则的情况下创建数据库时,将使用服务器默认值(如预期)。
MariaDB [(none)]> SHOW VARIABLES LIKE '%_server' ;
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| character_set_server | utf8mb4 |
| collation_server | utf8mb4_unicode_ci |
+----------------------+--------------------+
MariaDB [(none)]> CREATE DATABASE `test-without-charset` ;
MariaDB [(none)]> SELECT `DEFAULT_COLLATION_NAME` FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` LIKE 'test-without-charset';
+------------------------+
| DEFAULT_COLLATION_NAME |
+------------------------+
| utf8mb4_unicode_ci |
+------------------------+
Run Code Online (Sandbox Code Playgroud)
但是,在CREATE DATABASE
-query 中指定字符集时,默认排序规则更改为utf8mb4_general_ci
.
MariaDB [(none)]> CREATE DATABASE `test-with-charset` CHARACTER SET utf8mb4 ;
MariaDB [(none)]> SELECT `DEFAULT_COLLATION_NAME` FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` LIKE 'test-with-charset';
+------------------------+
| DEFAULT_COLLATION_NAME |
+------------------------+
| utf8mb4_general_ci |
+------------------------+
Run Code Online (Sandbox Code Playgroud)
我已经发现(mysql-manual)
如果在没有 COLLATE 的情况下指定了 CHARACTER SET charset_name,则使用字符集 charset_name 及其默认排序规则。要查看每个字符集的默认排序规则,请使用 SHOW CHARACTER SET 语句或查询 INFORMATION_SCHEMA CHARACTER_SETS 表。
它确实显示了utf8mb4_general_ci
,所以它遵守规则
MariaDB [(none)]> SHOW CHARACTER SET LIKE 'utf8mb4';
+---------+---------------+--------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+---------------+--------------------+--------+
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
+---------+---------------+--------------------+--------+
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何更改字符集的默认排序规则utf8mb4
。有没有我可以更改的配置文件来改变这种行为?我真的希望这两者保持一致。
当然,我试过谷歌找到任何相关的东西,但我能找到的只是改变collation_server
-setting。
服务器版本:10.3.15-MariaDB-log MariaDB 服务器
我认为没有办法改变这一点DEFAULT
。
无论如何,最好使用utf8mb4_unicode_520_ci
基于后来的 Unicode 标准的 。
只要养成在所有连接 和 上CHARACTER SET
指定和 的习惯即可。MySQL和MariaDB正在逐渐从latin1_swedish_ci更改为utf8mb4_0900_ai_ci。MariaDB 还没有出现,但我希望他们很快就会采取行动。而“900”可能不是最后一个 Unicode 标准。COLLATION
CREATE TABLEs
通过显式指定字符集和排序规则,您可以保持控制和一致性,即使它是过时的对。
妥协...
但字符集和排序规则在CREATE DATABASE
. 然后,任何没有特定设置而构建的表都将继承这些设置。该表中的列将从表的设置继承。
归档时间: |
|
查看次数: |
8731 次 |
最近记录: |