我有一个名为 tag 的表,在 name 列上有一个唯一约束:
CREATE TABLE `tag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_389B7835E237E06` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=13963 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
此表的排序规则是 utf8_unicode_ci。当我尝试插入以下 2 个条目时,我得到一个“完整性约束违规”执行。
SQL 日志:
130607 14:35:53 1096 Connect imtpdb@localhost on imtpdb
1096 Query SET NAMES utf8
1096 Query START TRANSACTION
1096 Query INSERT INTO tag (name) VALUES ('até')
1096 Query INSERT INTO tag (name) VALUES ('ate')
1096 Query rollback
1096 Quit
确切的错误信息是:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'ate' for key 'UNIQ_389B7835E237E06'
我的.cnf:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
我正在运行 mysql 5.1.54。我一直试图弄清楚这一点现在无济于事。有谁知道我做错了什么?哦,只是为了说明这一点。表中不存在该条目。