Mysql 使用从utf8\u turkish\u ci到utf8\u general\u ci的行更新表的效果?
我无法联接一些表,因为有些表/行是utf8\u general\u ci,有些是utf8\u turkish\u ci。因此,我不得不将土耳其语的一个重复,转换成通用,最后使用它。然而,我想知道,如果我将原始表格从土耳其语转换为general,我的应用程序会发生什么变化?我在PHP中使用MySQLMysql 使用从utf8\u turkish\u ci到utf8\u general\u ci的行更新表的效果?,mysql,utf-8,collation,Mysql,Utf 8,Collation,我无法联接一些表,因为有些表/行是utf8\u general\u ci,有些是utf8\u turkish\u ci。因此,我不得不将土耳其语的一个重复,转换成通用,最后使用它。然而,我想知道,如果我将原始表格从土耳其语转换为general,我的应用程序会发生什么变化?我在PHP中使用MySQL 这是最初的错误:操作“=”的排序规则(utf8\u general\u ci,隐式)和(utf8\u turkish\u ci,隐式)非法混合使用。您的列数据使用字符集存储。在这种情况下,它似乎是ut
这是最初的错误:
操作“=”的排序规则(utf8\u general\u ci,隐式)和(utf8\u turkish\u ci,隐式)非法混合使用。
您的列数据使用字符集存储。在这种情况下,它似乎是utf8
当您对这些列进行操作(例如,进行相等比较或排序)时,MySQL使用排序规则。每列都有一个默认排序规则,它从表的默认排序规则继承
索引中嵌入了列的默认排序规则,因此可以有效地运行
可以通过排序规则进行等式比较。例如,在连接中
可以指定
ON (turkish.village_name COLLATE utf8_general_ci) = euro.village_name
或许
ON turkish.village_name = (euro.village_name COLLATE utf8_turkish_ci)
这将消除非法的排序规则混合,而无需更改表。这可能会帮助您避免所询问的数据库更改。但是要注意,使用COLLATE
限定符可能会挫败索引的使用。如果您有一个很大的表,并且依赖索引来获得性能,那么这可能没有什么帮助
那么,如果更改表以更改默认排序规则,会发生什么情况
ORDER BY
结果将不正确orderby
子句中指定COLLATE
修饰符来解决这个问题
ORDER BY (euro.village_name COLLATE utf8_turkish_ci)