如果要在mysql / mariaDB中添加自定义排序规则,对于utf-8字符集,您可以修改... / charsets / Index.xml并使用LDML语法扩展字符集:
<charset name="utf8">
...
<collation name="utf8_myown_ci" id="1234">
<rules>
<reset>\u0000</reset>
<i>\u0020</i> <!-- space -->
...
</rules>
</collation>
...
</charset>
但是没有charset-tag的名字&#34; utf8mb4&#34;。所以我创建了一个名为=&#34; utf8mb4&#34;并添加了排序规则/规则标签,在phpmyadmin中,我可以选择新创建的排序规则。但我无法插入四个字节的字符;我收到了错误
"#1366 - Incorrect string value: '\xF0\x9F\x8D\xB5\xF0\x9F...' for field ..."
(使用mb4-collation构建我可以做到。)
更确切地说:我有一列(a)带有bulit-in collation utf8mb4_general_ci和一列(b)带有我自己的排序规则utf8mb4_myown_ci(在Index.xml中定义)。我在两列和列中插入相同的数据,没有错误,在列b中我会得到如上所述的错误。
我在Index.xml中创建了以下条目:
<charset name="utf8mb4">
<family>Unicode</family>
<description>UTF-8 MB4 Unicode</description>
<collation name="utf8mb4_general_ci" id="45">
<flag>primary</flag>
<flag>compiled</flag>
</collation>
<collation name="utf8mb4_bin" id="46">
<flag>binary</flag>
<flag>compiled</flag>
</collation>
<collation name="utf8mb4_myown_ci" id="213">
</collation>
</charset>
将collation-tag设置为空是没有问题的,因为我在charset =&#34; utf-8&#34;内创建了一个空的utf8_myown_ci。这很有效。
在使用utf8mb4_myown_ci的列中,我还可以插入3个字节字符,因此它似乎被解释为utf8排序规则。
我多次尝试google并且在这里找不到任何内容,但我找不到任何提示,如何将字符串添加到字符集中,而这些字符串在Index.xml中并不存在。
任何想法怎么做?谢谢你的任何提示!
答案 0 :(得分:0)
答案 1 :(得分:0)
原来,我使用了一个被占用的校对ID。如果我使用例如501而不是213,它有效。