我正在研究一个应该使用i18n技术的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 :(得分:0)
您的数据库本身可能设置为latin1,或者slugs表设置为latin1,或者slugs表中的其中一列设置为latin1 ......难道你不喜欢MySQL吗?
database.yml仅适用于适配器,它不会更改数据库。 进入dbconsole,然后:
检查数据库设置:
显示变量如'char%';
SHOW VARIABLES LIKE'collation%';
检查表设置:SHOW CREATE TABLE tablename;
检查各列:在表名中显示全列;
如果您使用错误的编码创建了数据库,则必须在所有这些中更改latin1的每一次出现。