在MySQL中创建表时,应该设置哪些排序规则:
latin1_swedish_ci或utf8_general_ci什么是校对?
我一直在使用latin1_swedish_ci,它会引起什么问题吗?
发布于 2011-07-22 08:21:52
无论您做什么,都不要尝试在mysql中使用默认的swedish_ci排序规则(而不是拉丁文),否则会出现错误。排序规则必须与正确的字符集匹配才能工作。由于字符集和排序规则不匹配,此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@Blaisor刀片指出,解决这个问题的方法是使用与瑞典排序规则相匹配的字符集:
DEFAULT CHARACTER SET = utf8_swedish_ci用于Yii框架的cal (日历)模块的SQL与上面的错误代码类似。希望他们现在已经修好了。
发布于 2011-06-09 08:30:10
您可以在MySQL 5.5中阅读有关字符集和排序规则的内容:
为了支持世界上所有的书面语言,校对支持是必要的。例如,在我的语言(丹麦语)中,我们有一个特殊的字符‘。听起来像是瑞典语,德语,匈牙利语(等等)。丹麦语中的这一字也是从其中一种语言中输入的。由于校对的支持,我们既可以正确地打印,也可以排序相同(按.是一样的。如果没有校对支持,这是不可能的。
瑞典排序规则是拉丁字符集的MySQL默认设置。它适用于英语。英语是如此简单--它适用于所有的事物,因为它没有特殊的字符、重音等等。但是如果你有另一种你经常使用的语言(例如西班牙语),你可以将排序规则改为西班牙语,所以根据西班牙语规则对西班牙语字符串进行排序是正确的。
一个非常特别的例子是德国的校勘。它的创建是为了像德国电话簿那样进行分类。德语电话本不遵循德语的一般规则!
如果你愿意,你可以创建你自己的校对。排序规则可以编译或文本格式。
发布于 2015-01-03 17:40:27
在WebServer2.5中,您可以通过进入PHPAdmin,选择需要更改的数据库来更改排序规则。这将给你另一组标签。选择称为操作的选项卡。在该选项卡中将有名为“排序规则”的部分,请在下拉菜单中选择您想要的,然后选择go。
https://stackoverflow.com/questions/4769517
复制相似问题