使用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
答案 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将查找的配置文件(按顺序)。