MySQL Workbench 连接编码
MySQL Workbench Connection Encoding
在测试一些代码时,我偶然发现了以下 MySQL 错误:
Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and ( utf8mb4_general_ci,COERCIBLE) for operation '='
我在标准 MySQL UTF-8 归类列上使用 WHERE 语句,其中包含一个使用 4 个字节的字符。除非我理解错了,在阅读时,我发现了以下信息:
- MySQL 的原始 UTF-8 实现不完整(最多支持 3 个字节)
- 解决这个问题的方法是一种名为 utf8mb4 的新排序规则,它绝不是一种新编码,只是 MySQL 用来修补他们原来的错误。
就我而言,我认为没有理由使用原始的 MySQL UTF-8 实现,因为它不完整。所以我做了一些服务器端配置以确保所有默认值都指向 utf8mb4。一切似乎都很好,但现在在我的应用程序中:我可以在我的表单中使用字符而不必担心 MySQL.
我现在的问题仍然是,当我连接 MySQL Workbench 时,编码似乎被强制为 UTF-8。因此,即使我的应用程序正常工作,如果我想 运行 直接在 MySQL Workbench 中进行测试,我也会收到 "Illegal mix of collation" 错误,除非我 运行 此修复(在 Workbench) 启动应用程序后:
SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'
我发现这个老问题 (MySQL Workbench charset) 似乎无法覆盖设置,但即使我花了太多时间搜索配置,我还是不敢相信情况仍然如此??
目前,恐怕您将不得不忍受这些。 MySQL 有一个 WL,用于将该编码重命名为 utf8(丢弃现有的 3 字节变体)。所以在 MySQL Workbench 中保留 utf8 是有意义的,否则我们必须为不同的服务器使用不同的设置,这会使事情变得更加复杂。
在测试一些代码时,我偶然发现了以下 MySQL 错误:
Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and ( utf8mb4_general_ci,COERCIBLE) for operation '='
我在标准 MySQL UTF-8 归类列上使用 WHERE 语句,其中包含一个使用 4 个字节的字符。除非我理解错了,在阅读时,我发现了以下信息:
- MySQL 的原始 UTF-8 实现不完整(最多支持 3 个字节)
- 解决这个问题的方法是一种名为 utf8mb4 的新排序规则,它绝不是一种新编码,只是 MySQL 用来修补他们原来的错误。
就我而言,我认为没有理由使用原始的 MySQL UTF-8 实现,因为它不完整。所以我做了一些服务器端配置以确保所有默认值都指向 utf8mb4。一切似乎都很好,但现在在我的应用程序中:我可以在我的表单中使用字符而不必担心 MySQL.
我现在的问题仍然是,当我连接 MySQL Workbench 时,编码似乎被强制为 UTF-8。因此,即使我的应用程序正常工作,如果我想 运行 直接在 MySQL Workbench 中进行测试,我也会收到 "Illegal mix of collation" 错误,除非我 运行 此修复(在 Workbench) 启动应用程序后:
SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'
我发现这个老问题 (MySQL Workbench charset) 似乎无法覆盖设置,但即使我花了太多时间搜索配置,我还是不敢相信情况仍然如此??
目前,恐怕您将不得不忍受这些。 MySQL 有一个 WL,用于将该编码重命名为 utf8(丢弃现有的 3 字节变体)。所以在 MySQL Workbench 中保留 utf8 是有意义的,否则我们必须为不同的服务器使用不同的设置,这会使事情变得更加复杂。