我在 Rails 版本 3.0.10 上运行 jruby。我发现活动记录迁移以某种方式在所有 varchar 列上生成 COLLATE utf8_bin 。
当我表演创建表用户时:
CREATE TABLE `users` (
`id` int(11) not null AUTO_INCREMENT default NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin not null default '',
`remember_created_at` datetime,
`sign_in_count` int(11) default 0,
`current_sign_in_at` datetime,
`last_sign_in_at` datetime,
`current_sign_in_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin default NULL,
....
任何人都知道为什么以及如何关闭它?
The utf8_bin
排序规则用于在区分大小写的模式下通过每个字符的二进制值来比较字符串。使用的字符集或排序规则可能取决于数据库的本地设置。例如对于 MySQL 数据库,您可以通过以下 MySQL 命令检查 MySQL 数据库的排序规则模式
mysql> SELECT COLLATION(VERSION());
+----------------------+
| COLLATION(VERSION()) |
+----------------------+
| utf8_general_ci |
+----------------------+
..或者使用这个..
mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
在你的情况下,这些值之一应该是utf8_bin
。数据库的一般值可以在您的配置文件中设置,可能是my.cnf
对于MySQL。为了创建具有特定引擎、字符集或排序规则的 MySQL 表,您可以使用迁移选项:
create_table :users,
:options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'
...
根据文档,表字符集和排序规则 http://dev.mysql.com/doc/refman/5.0/en/charset-table.html是MySQL的扩展,标准SQL中没有这样的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)