首页 > 解决方案 > Mysql 表排序规则改变

问题描述

我有一个带有几个西班牙关键字的旧表。它的排序规则是 latin1_swedish_ci。
包含关键字的列具有主索引。
当我尝试将排序规则更改为 utf8_general_ci 时,这是不可能的,因为如果找到重复项。
使用该索引是不可能的。
发生的情况是,例如,“cañada”被视为已经存在但它们是不同的词的“加拿大”。
那是使用 phpMyAdmin。
另一种尝试是将表导出为file.sql并使用
sed 's/STRING_SOURCE/STRING_REPLACE/'
,但最后mysql源给了我同样的错误(确实期望:))
我也尝试使用整个数据库的最后一个。

MySQL 版本 5.5.64-MariaDB
phpMyAdmin,选择数据库/表,选项卡结构,选择关键字的列更改,最后从下拉排序规则中选择 ut8_general_ci

如何在保留所有关键字的情况下进行此更改?

标签: mariadbcollation

解决方案


由于您专注于西班牙语,因此请使用西班牙语排序规则,而不是通用排序规则: utf8_spanish_ciutf8_spanish2_ci. 它们将和ñ视为单独的字母。其他排序规则将和视为相同。noñn

同时,ç=c.

然而,utf8_spanish_ci 将其ll视为两个l,而 utf8_spanish2_ci 将其视为lz紧随其后。(关于字典与电话簿的区别——还记得古代历史上的那些文物吗?)

参考: http: //mysql.rjweb.org/utf8_collat​​ions.html

升级到 8.0 后,将有另外两个选择: utf8mb4_es_0900_ai_ciutf8mb4_es_trad_0900_ai_ci.

参考: http: //mysql.rjweb.org/utf8mb4_collat​​ions.html


推荐阅读