在 MySQL 中创建表时我应该为 Collation 设置什么:
latin1_swedish_ci
或utf8_general_ci
到底什么是排序规则?
我一直在使用latin1_swedish_ci
,会不会有什么问题?
最佳答案
无论你做什么,都不要尝试在 mysql 中使用默认的 swedish_ci 排序规则和 utf8(而不是 latin),否则你会得到一个错误。排序规则必须与正确的字符集配对才能工作。由于字符集和排序规则不匹配,此 SQL 将失败:
CREATE TABLE IF NOT EXISTS `db`.`events_user_preference` (
`user_id` INT(10) UNSIGNED NOT NULL ,
`email` VARCHAR(40) NULL DEFAULT NULL ,
PRIMARY KEY (`user_id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = latin1_swedish_ci
@Blaisorblade 指出解决这个问题的方法是使用瑞典语排序规则附带的字符集:
DEFAULT CHARACTER SET = utf8_swedish_ci
Yii php 框架的 cal(日历)模块的 SQL 与上述错误代码类似。希望他们现在已经修好了。
关于MySQL 排序规则 : latin1_swedish_ci Vs utf8_general_ci,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769517/