在rails迁移中定义字符

时间:2011-04-21 15:57:03

标签: ruby-on-rails-3

使用Rails迁移创建的所有表和字段都有latin1_swedish_ci整理。 因为我的项目使用的是俄语,所以这种校对是不合适的。

是否可以将迁移用于utf8_general_ci

P.S。我的database.yml:

development:
  adapter: mysql2
  encoding: utf8
  collation: utf8_general_ci
  reconnect: false
  database: my_development
  pool: 5
  username: username
  password: 'heavy'
  host: localhost

2 个答案:

答案 0 :(得分:11)

以下是在迁移中指定排序规则的示例:

create_table :users, :options => 'COLLATE=utf8_general_ci' do |t|
  t.string :email
  t.timestamps
end

答案 1 :(得分:1)

Rails不会在连接上设置排序规则(仅在create_database调用中的数据库上)。这里最好的想法是将它自己设置在系统的MySQL配置文件中,例如。 /etc/my.cnf

我实际上建议您告诉MySQL完全忽略客户端握手,服务器告诉客户端使用哪个字符集和排序规则更好。我的MySQL conf的相关部分如下所示:

[server]
character_set_server=utf8
collation_server=utf8_unicode_ci
skip_character_set_client_handshake

如果您走这条路,请记住在部署到的服务器上执行相同的操作。如果您不知道配置文件在哪里用于MySQL,请从命令提示符运行:my_print_defaults | grep -A1 "Default options"这将为您提供MySQL将查找的配置文件(按顺序)。