首頁 >資料庫 >mysql教程 >如何修復 MySQL 的「非法混合排序規則」錯誤?

如何修復 MySQL 的「非法混合排序規則」錯誤?

DDD
DDD原創
2025-01-10 19:41:47334瀏覽

How to Fix MySQL's

MySQL 的「非法混合排序規則」錯誤故障排除

大型資料集有時會觸發 MySQL 令人沮喪的「非法混合排序規則」錯誤。當比較具有不一致字元集和排序規則的資料時,會發生這種情況。

問題

考慮這個查詢:

<code class="language-sql">SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€'</code>

執行此指令可能會產生:

<code>Error Number: 1267
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='</code>

解:字串轉義與編碼變更

有兩種主要方法可以解決此問題:轉義有問題的字串,或更改資料庫和表格編碼。

方法一:字串轉義(暫時修復)

轉義字串可以暫時避免錯誤:

<code class="language-sql">SET collation_connection = 'utf8_general_ci';

SELECT COUNT(*) AS num
FROM keywords
WHERE campaignId = '12'
AND LCASE(keyword) = 'hello again \"昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€\"'</code>

然而,這是一個創可貼解決方案,可能會在未來產生問題。

方法二:更改資料庫和表格編碼(永久解決方案)

要永久修復,請標準化您的資料庫和表格以使用 utf8_general_ci:

<code class="language-sql">ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;</code>

透過將連接排序規則和資料庫/表編碼統一為 utf8_general_ci,您可以確保一致的資料處理並消除排序規則不符。 這是推薦的方法。

以上是如何修復 MySQL 的「非法混合排序規則」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn