mariadb - 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
如何在保留所有关键字的情况下进行此更改?
解决方案
由于您专注于西班牙语,因此请使用西班牙语排序规则,而不是通用排序规则: utf8_spanish_ci
和utf8_spanish2_ci
. 它们将和ñ
视为单独的字母。其他排序规则将和视为相同。n
o
ñ
n
同时,ç=c
.
然而,utf8_spanish_ci 将其ll
视为两个l
,而 utf8_spanish2_ci 将其视为lz
紧随其后。(关于字典与电话簿的区别——还记得古代历史上的那些文物吗?)
参考: http: //mysql.rjweb.org/utf8_collations.html
升级到 8.0 后,将有另外两个选择: utf8mb4_es_0900_ai_ci
和utf8mb4_es_trad_0900_ai_ci
.
推荐阅读
- c++ - Mongoose Web 服务器文件流 API
- reactjs - 将代码块作为道具传递给数组
- react-native - 如何确保 expo 知道我的笔记本电脑中安装了 SDK
- c# - 列表
在 JSON 中返回为空数组 - javascript - 异步操作 Redux 未处理拒绝(错误):操作必须是普通对象。使用自定义中间件进行异步操作
- git - git describe 命令中 ^ 的含义
- selenium - 单击后提交按钮不更改/导航页面
- android - 如何在 Android 中限制 ScrollView 的边界?
- ruby-on-rails - Rails:带有散列的枚举不返回散列键:值
- php - mysql。从具有共同列的许多表中检索数据