我试图用一个单词列表填充一个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');

第二次插入因违反约束而失败("关键字"WORD"的重复条目"seth").

如何使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)
);

Mysql相关问答推荐

MySQL生成的整型计算可以为空吗?

我需要为用户提供MySQL视图和存储的 routine ,但不是基础表

如何跨多个产品查找相同时间范围的数据集

Mysql - Select 匹配某些条件的两条记录之间经过的最大天数

错误 2020 (HY000): 数据包大于 'max_allowed_pa​​cket' 字节,docker 容器内出现 mysql 错误

MYSQL 8.0 - 从 INFORMATION_SCHEMA.COLUMNS 获取表列重新调整其他不相关的列

根据 JOIN 结果计算列中的值?

MySQL 可以用于将列表排序为三分之三吗?

生成直到 10 的平方数序列

Mysql如何分行分词

如何获取每日登录用户数?

使用来自另一个表 mysql 的值将新行插入到表中

MySQL - 如何查询涉及前面计算值的表结果

在 Codeigniter MySQL 中从另一个数据库获取数据

MySQL:从 n 个关系表中 Select 所有具有 MAX() 值的行

从 MYSQL 查询中计算列的平均值

安装 mysql-python (Windows)

如何将时刻 JS 时间插入 MySQL

一次查询 MySQL 插入多行

SQL WHERE 列 = 一切