繁体   English   中英

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中运行测试,除非在启动应用程序后运行此修复程序(在Workbench中),否则我会收到“排序规则的非法混合”错误:

SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM