0

我正在开发一个应该使用 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

4

1 回答 1

0

很可能您的数据库本身设置为 latin1,或者 slugs 表设置为 latin1,或者 slugs 表中的一列设置为 latin1...您不只是喜欢 MySQL 吗?

database.yml 仅适用于适配器,它不会更改数据库。进入 dbconsole,然后:

检查数据库设置:
SHOW VARIABLES LIKE 'char%';
显示像'collat​​ion%'这样的变量;

检查表设置:SHOW CREATE TABLE tablename;

检查各个列: SHOW FULL COLUMNS IN tablename;

如果您使用错误的编码创建了一个数据库,您将不得不更改所有这些中出现的每一个 latin1。

于 2012-05-29T16:15:09.850 回答