mysql - SQL唯一varchar区分大小写问题

我正在尝试使用单词列表填充 SQL 表。表格本身很简单:

CREATE TABLE WORDS(
  ID BIGINT AUTO_INCREMENT, 
  WORD VARCHAR(128) NOT NULL UNIQUE, 
  PRIMARY KEY(ID)
);

我遇到的问题是:当我执行以下背靠背插入操作时

INSERT INTO WORDS(WORD) VALUES('Seth');
INSERT INTO WORDS(WORD) VALUES('seth');

第二次插入因违反约束而失败(“Duplicate entry 'seth' for key 'WORD'”)。

如何使 WORD 上的 UNIQUE 约束区分大小写?

最佳答案

看起来mysql是case insensitive by default :

您可能需要使用区分大小写的排序规则(例如 utf8_bin)创建列:

CREATE TABLE WORDS (
    ID BIGINT AUTO_INCREMENT, 
    WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE, 
    PRIMARY KEY(ID)
);

https://stackoverflow.com/questions/6448825/

相关文章:

mysql - 在 MySQL 中循环遍历结果集

mysql - "Data too long for column"- 为什么?

mysql - 等于 (=) 和具有一个文字值的 IN 之间的性能差异

mysql - 数据库在 QuerySet.dates() 中返回了无效值

c# - MySQL - 实体 : The value for column 'IsPrimaryK

mysql - 在 MySQL 中生成整数序列

mysql - 如何使用配置和库文件完全删除 MySQL?

mysql - MySQL中的case语句

mysql - 如何在 Doctrine 2 DQL 中使用 now()?

mysql - 什么是 MySQL "Key Efficiency"