我在MySQL中的存儲過程失敗,出現Mysql::Error: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
。存儲過程中的排序規則非法混合
當它在SELECT
子句中嘗試將VARCHAR
列與VARCHAR
參數傳遞給此過程時,該過程失敗。
我表格中的所有列都有utf8_unicode_ci
排序規則。數據庫整理是一樣的。我甚至在`/config/database.yml中指定了排序規則。
然而,當我運行/script/console
我已經設置下列變量:
>> ActiveRecord::Base.connection.select_rows "show variables like '%colla%'"
=> [["collation_connection", "utf8_general_ci"], ["collation_database", "utf8_unicode_ci"], ["collation_server", "utf8_general_ci"]]
而且可能是最有趣的事實是,我有相同的歸類(甚至查詢覈對變量從同一個MySQL服務器上的另一個數據庫Rails控制檯給出了相同的結果),它運行這個存儲過程沒有任何問題。
感謝您的幫助。
我剛剛發現我的一個表已整理設置爲`utf8_general_ci`一套是inproper在我的數據庫,這是原因。感謝您花時間在這個問題上。 – skalee 2010-12-07 20:32:22