[英]Procedure in mysqldb fails Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation 'like'
[英]Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
我收到了這個錯誤;
非法混合排序規則 (utf8mb4_unicode_ci,IMPLICIT) 和 (utf8mb4_general_ci,IMPLICIT) 用於操作 '='
我將“排序規則”更改為“utf8mb4_unicode_ci”。 然后表被截斷,我再次重新導入行。 但仍然得到同樣的錯誤
我猜你在加入的表上有不同的排序規則。 它說您在操作=
中使用了非法的排序規則組合。
所以你需要設置排序規則。 例如:
WHERE tableA.field COLLATE utf8mb4_general_ci = tableB.field
然后,您在=
操作上設置了相同的排序規則。
由於您沒有提供有關表格的更多信息,這是我能提供的最好的偽代碼。
對於加入查詢,我使用這條查詢來解決此類錯誤:
select * from contacts.employees INNER JOIN contacts.sme_info
ON employees.login COLLATE utf8mb4_unicode_ci = sme_info.login
之前使用以下查詢,我得到了同樣的錯誤:
select * from contacts.employees LEFT OUTER JOIN contacts.sme_info
ON employees.login = sme_info.login
Error: Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
我對排序規則了解不多,但似乎兩個表都遵循不同的字符集規則。 因此,等於運算符無法執行。 所以在第一個查詢中,我指定了一個排序規則集來收集和組合。
檢查與charset=utf8mb4
的連接
'dsn' => 'mysql:dbname=DatabaseName;host=localhost;charset=utf8mb4';
幾個小時后,我終於找到了一個適合我的解決方案(使用 phpMyAdmin)。
請記住在執行這些操作之前先備份您的數據庫。
我也查了
*更改所有表格排序規則
*更改所有表格列排序規則
我認為這不是 100% 必要的,但重新啟動 mySQL/MariaDb 服務 + 斷開連接並重新連接到數據庫也是一個好主意。
附加說明:我不得不使用utf8mb4_general_ci ,因為在使用 utf8mb4_unicode_ci 時問題仍然存在(我最初想使用)
有關其他信息、命令行查詢和插圖示例,我推薦這篇文章: https ://mediatemple.net/community/products/dv/204403914/default-mysql-character-set-and-collation
-- 這對我有用
SET collation_connection = 'utf8mb4_general_ci';
ALTER DATABASE your_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
首先,檢查表和數據庫的排序規則,如果它們不同,則使其相似。
如果您在存儲過程中遇到錯誤,那么首先檢查您的數據庫的排序規則和您正在執行相同操作的列,如果它們不同,請將列排序規則更改為您的數據庫,然后您必須重新創建它通過刪除存儲過程。
問題是兩個表都有相同的列,為了克服這個問題,我們需要同時改變表和數據庫
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tabel1 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tabel2 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.