所有使用Rails迁移创建的表和字段都具有latin1_swedish_ci
排序。因为我的项目使用俄语,所以这个排序是不合适的。
可以在utf8_general_ci
中使用迁移吗?
注:我的形式:
development:
adapter: mysql2
encoding: utf8
collation: utf8_general_ci
reconnect: false
database: my_development
pool: 5
username: username
password: 'heavy'
host: localhost
下面是一个在迁移中指定排序规则的示例:
create_table :users, :options => 'COLLATE=utf8_general_ci' do |t|
t.string :email
t.timestamps
end
Rails不设置连接上的排序(仅在create_database
调用的数据库上)。最好的办法是自己在系统的MySQL配置文件中设置它,例如:/etc/my.cnf
我实际上建议你告诉MySQL完全忽略客户端握手,最好是服务器告诉客户端使用哪个字符集和排序法。MySQL配置文件的相关部分如下所示:
[server]
character_set_server=utf8
collation_server=utf8_unicode_ci
skip_character_set_client_handshake
如果选择此路径,请记住在部署到的服务器上执行相同的操作。如果你不知道MySQL的配置文件在哪里,那么从命令提示符中运行:my_print_defaults | grep -A1 "Default options"
这将给你MySQL将查找的配置文件(按顺序)。