表总和排序规则是 latin1_swedish_ci,但所有单独的表都显示 utf8_general_ci

Posted

技术标签:

【中文标题】表总和排序规则是 latin1_swedish_ci,但所有单独的表都显示 utf8_general_ci【英文标题】:tables sum collation is latin1_swedish_ci, but all individual tables show utf8_general_ci 【发布时间】:2016-11-10 06:04:04 【问题描述】:

这个 mysql 数据库是通过安装 WordPress 在 Godaddy 中设置的。网站上的事情发生了故障 - 更换主题和停用插件并没有帮助,所以我决定使用 phpmyAdmin 查看表格。

我以前从未见过这个 - 所有表都使用 utf8_general_ci(有 13 个表),但底部是所有内容的摘要,排序规则显示 latin1_swedish_ci,而不是 utf8...

似乎不应该这样。使用 utf8...而不是 latin1_swedish,我能做些什么来使其统一?

【问题讨论】:

【参考方案1】:

为了帮助解释,SHOW CREATE TABLE 给了你这样的东西:

CREATE TABLE `h2u` (
  `c` varchar(9) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这表示 c 列是 utf8(以及一些 utf8 排序规则,可能是 utf8_general_ci),但是您可能添加的任何其他列的 默认 是 latin1 (和一些 latin1 排序规则,可能是 latin1_swedish_ci)。

上的CHARACTER SETCOLLATION 很重要。

(很遗憾,第 3 方软件虽然试图提供帮助,但有时会掩盖有用的信息。)

编辑

我会猜测从图片中数据库默认是latin1 / latin1_swedish_ci和默认每个 table 是 utf8 / utf8_general_ci。但重要的是每个的设置是什么;图片没有显示。

如果您使用的不是英文文本,则每列的字符集和排序规则很重要。你是吗?

是的,你发现了一些奇怪的东西。我想说的是,它可能并不重要,而且除了非英文文本外,不太可能引起任何故障。

以下将创建类似于图像的输出:

CREATE DATABASE wp DEFAULT CHARACTER SET latin1;
CREATE TABLE wp_users (...) DEFAULT CHARACTER SET utf8; -- overriding the 'latin1'

【讨论】:

它在排序规则列中。也许一张照片会有所帮助?除非我完全不理解你的观点(这是可能的)。 imgur.com/a/otbf1 回答您的问题 - 不,将使用英语以外的任何内容。所以罪魁祸首不是分贝。但是我在许多使用 GoDaddy 自动设置设置的 WP 网站上工作过。我在其他网站的其他数据库中没有看到这种异常情况……它们也是使用 GD 界面设置的。 如果只有英文,那么“没有问题”。也就是说,不要担心差异,它不会有任何影响。 非常感谢您的详细解释。

以上是关于表总和排序规则是 latin1_swedish_ci,但所有单独的表都显示 utf8_general_ci的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode 40. 组合总和 II] 不排序使用哈希表+dfs递归 vs 排序栈+回溯

SQL查询按总和排序

临时表的默认排序规则

数据库、表、列排序规则的区别

Mysql 表排序规则改变

grails 表排序规则 latin_swedish_ci 虽然 db 排序规则是 utf8_general_ci