【问题标题】:MySQL Workbench Connection EncodingMySQL Workbench 连接编码
【发布时间】:2015-12-17 13:43:05
【问题描述】:

在测试一些代码时,我偶然发现了以下 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 collat​​ion”错误,除非我在启动应用程序后(在 Workbench 中)运行此修复:

SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'

我发现这个老问题 (MySQL Workbench charset) 似乎无法覆盖设置,但即使我花了太多时间搜索配置,我也不敢相信情况仍然如此??

【问题讨论】:

    标签: mysql unicode utf-8 character-encoding mysql-workbench


    【解决方案1】:

    现在,恐怕你将不得不忍受这种情况。 MySQL 有一个 WL 可以将该编码重命名为 utf8(丢弃现有的 3 字节变体)。所以在 MySQL Workbench 中保留 utf8 是有意义的,否则我们必须为不同的服务器使用不同的设置,这会使事情变得更加复杂。

    【讨论】:

    • 您知道何时计划进行此 UTF8 更改吗?我还看到了多种解决临时位置的方法。这样具有在连接级别可配置的编码。或者,使用户能够在连接到特定服务器后运行特定命令。等等......现在看起来如果你想使用正确的 UTF8,你必须手动覆盖硬编码的连接设置?为什么不采用更灵活的方式来处理这个问题?
    • 不能说任何关于时间表的事情。为了灵活性:随之而来的是更多的可能性使某些事情失败。这始终是一种权衡,越简单越好,至少对于大多数用户群而言。
    • 好吧,“连接后运行”对于普通用户来说似乎足够简单,对于高级用户来说足够灵活。有没有办法为 Workbench 提出功能请求? :) 再次感谢您抽出宝贵时间回答
    • 当然,请在我们的错误跟踪器 (bugs.mysql.com) 中发布您的功能请求。
    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2015-01-19
    • 2015-08-18
    • 2013-11-03
    • 2020-07-09
    • 2011-10-30
    • 2015-08-06
    • 2011-12-18
    相关资源
    最近更新 更多