mysql報錯1267?-?Illegal?mix?of?collations問題的解決方法
我輸入下面代碼
SELECT
*
FROM
po_pomainviewt
WHERE cInvName IN (
SELECT SUBSTRING_INDEX(FileName, '.', 1)
FROM fileinfo
);
錯誤
報錯1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_german2_ci,IMPLICIT) for operation '='
這個錯誤是由于在執(zhí)行查詢時,兩個表的字符集排序規(guī)則(collation)不一致。你可以通過以下幾種方式來解決這個問題:
1. 使用 COLLATE 指定相同的排序規(guī)則
你可以在查詢中明確指定 COLLATE,讓兩邊的排序規(guī)則一致。例如:
SELECT *
FROM po_pomainviewt
WHERE cInvName COLLATE utf8mb4_german2_ci IN (
SELECT SUBSTRING_INDEX(FileName, '.', 1) COLLATE utf8mb4_german2_ci
FROM fileinfo
);
在這個例子中,我使用了 utf8mb4_german2_ci 排序規(guī)則。你也可以根據(jù)需要將其更改為其他適合你的排序規(guī)則。
2. 修改表的排序規(guī)則
你可以修改表的排序規(guī)則,使其在整個表中保持一致:
ALTER TABLE po_pomainviewt CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci; ALTER TABLE fileinfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci;
3. 統(tǒng)一數(shù)據(jù)庫的排序規(guī)則
你也可以修改數(shù)據(jù)庫的排序規(guī)則,讓所有新表使用相同的排序規(guī)則:
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci;
這個方法直接比較字符的二進制值,不受排序規(guī)則影響。
選擇最適合你當前情況的方法進行處理。
總結(jié)
到此這篇關(guān)于mysql報錯1267 - Illegal mix of collations問題解決方法的文章就介紹到這了,更多相關(guān)mysql報錯1267 Illegal mix of collations內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql大數(shù)據(jù)查詢優(yōu)化經(jīng)驗分享(推薦)
這篇文章主要介紹了mysql大數(shù)據(jù)查詢優(yōu)化經(jīng)驗分享,真的是正兒八經(jīng)的mysql優(yōu)化技巧,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03
MySQL提示表不存在的解決error:1146:Tabledoesn'texist(最新推薦)
在使用MySQL的過程中,有時會遇到“Table?doesn't?exist”(表不存在)的錯誤,錯誤代碼通常為1146,這個問題可能由多種原因引起,本文將幫助你診斷和解決這個問題,感興趣的朋友一起看看吧2025-07-07
mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作
這篇文章主要介紹了mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作,修改表指的是修改數(shù)據(jù)庫之后中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)2022-07-07
mysql使用mysqld_multi部署單機多實例的方法教程
這篇文章主要給大家介紹了關(guān)于mysql使用mysqld_multi部署單機多實例的相關(guān)資料,文中通過示例代碼將實現(xiàn)的步驟一步步介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03

