lau*_*kok 15 mysql database-design collation
在MySQL中创建表时,我应该为Collation设置什么:
latin1_swedish_ci 要么 utf8_general_ci无论如何,整理是什么?
我一直在使用latin1_swedish_ci,会不会引起任何问题?
无论你做什么,不要尝试在mysql中使用utf8(而不是拉丁语)的默认swedish_ci排序规则,否则你会收到错误.排序必须与正确的字符集配对才能工作.由于charset和collation不匹配,此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
Run Code Online (Sandbox Code Playgroud)
并且@Blaisorblade指出解决这个问题的方法是使用与瑞典排序规则相关的字符集:
DEFAULT CHARACTER SET = utf8_swedish_ci
Run Code Online (Sandbox Code Playgroud)
用于Yii php框架的cal(日历)模块的SQL具有类似于上述错误代码的内容.希望他们现在已经修好了.
小智 5
您可以在此处阅读有关 MySQL 5.5 的字符集和排序规则的信息:
\n一般字符集和排序规则
\n MySQL 中的字符集和排序规则
排序规则支持对于支持世界上所有的书面语言是必要的。例如,在我的语言(丹麦语)中,我们有一个特殊字符“\xc3\xa6\”。听起来像瑞典语、德语、匈牙利语(等等) \'\xc3\xa4\' 。该字符也出现在丹麦语中,其中的单词是从其中一种语言导入的。由于排序规则的支持,我们可以正确打印并进行相同的排序(ORDER BY ...)。如果没有排序规则支持,这是不可能的。
\n\n瑞典语排序规则是 MySQL 拉丁字符集的默认排序规则。它与英语配合得很好。英语非常简单 - 它适用于所有语言,因为它没有特殊字符、重音等。但是如果您经常使用另一种语言(例如西班牙语),您可以将排序规则更改为西班牙语,因此对西班牙语字符串进行排序根据西班牙语规则正确。
\n\n一个非常特殊的排序规则示例是德语排序规则之一。它的创建是为了像德国电话簿一样进行排序。德语电话簿不遵循德语的一般规则!
\n\n如果您愿意,您可以创建自己的排序规则。排序规则可以是编译的或文本格式的。
\n| 归档时间: |
|
| 查看次数: |
32002 次 |
| 最近记录: |