【问题标题】:Mysql table collation changeMysql 表排序规则改变
【发布时间】:2020-02-13 06:06:37
【问题描述】:

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

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

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

【问题讨论】:

  • 您很可能需要 utf8mb4_unicode_as 或更好的版本(utf8mb4_0900_as 如果您的 MySQL 版本支持它)。
  • 嗯,我刚刚测试了你描述的过程,我没有遇到问题。您使用的是什么版本的 MySQL。您能准确描述一下您是如何更改排序规则的吗?
  • @Lunc Change fo utf8mb4_unicode_ci (not _as) 成功,没有重复的错误输出
  • @dstonek - 你确定 utf8mb4_unicode_ci 吗?

标签: mariadb collation


【解决方案1】:

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

同时,ç=c

但是 ll 被 utf8_spanish_ci 视为两个 l,而它被 utf8_spanish2_ci 视为在 lz 之后。 (关于字典与电话簿的区别——还记得古代历史中的那些文物吗?)

参考:http://mysql.rjweb.org/utf8_collations.html

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

参考:http://mysql.rjweb.org/utf8mb4_collations.html

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 2022-08-08
    • 2011-11-14
    • 2012-01-19
    • 2011-04-19
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多