2011-08-17 54 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在所有这些中的每一次出现。