MySQL 排序规则 : latin1_swedish_ci Vs utf8_general_ci

标签 mysql database-design collation

在 MySQL 中创建表时我应该为 Collat​​ion 设置什么:

  • latin1_swedish_ciutf8_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/

相关文章:

mysql - 这是动态表吗?或者是什么

mysql - 无法在 mysql 中插入 unicode 字形

php - 如何在 .jpg 链接中显示来自 blob 的 .jpg 图像

php - 使用 HTML2PDF 和 MySQL 创建 PDF

mysql - CRM 关系 MySQL

mysql - SELECT 中的 GROUP BY 和 SELECT

sql - 从子类 : How many queries do I need? 中选择产品

mysql - MySQL 中是否可以进行多字符到单字符的排序规则?

sql-server - SQL Server 列名区分大小写

PHP 只解析数组中的第一个元素