簡體   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