2011-08-17 57 views
0

我對應該利用國際化技術refinerycms實例工作的非法組合,但在俄羅斯節省出來的時候一個頁面我不斷收到以下錯誤:在RefineryCMS:歸類

ActiveRecord::StatementInvalid in Admin::PagesController#update 

Mysql2::Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=': SELECT COUNT(*) FROM `slugs` WHERE `slugs`.`name` = 'Ñтраница-не-найдена' AND `slugs`.`scope` IS NULL AND `slugs`.`locale` = 'ru' AND (`slugs`.sluggable_id = 2 AND `slugs`.sluggable_type = 'Page') 

任何想法爲什麼會發生?在我的database.yml中,我將編碼設置爲utf8

回答

0

很可能您的數據庫本身設置爲latin1,或者slugs表設置爲latin1,或者slugs表中的一列設置爲latin1 ...你不喜歡MySQL嗎?

database.yml僅適用於適配器,它不會更改數據庫。 進入dbconsole,然後:

檢查數據庫設置:
SHOW VARIABLES LIKE'char%';
SHOW VARIABLES LIKE'collat​​ion%';

檢查表設置:SHOW CREATE TABLE tablename;

要檢查單個列:在tablename中顯示完整列;

如果你使用錯誤的編碼創建了一個數據庫,你將不得不改變latin1在所有這些中的每一次出現。