【发布时间】:2017-04-26 06:28:17
【问题描述】:
我有一个表 Labels 有 2 列:
+-------------+--------------+-------------+
| Column Name | Type | Key |
+-------------+--------------+-------------+
| id | integer | primary key |
| label | varchar(255) | unique |
+-------------+--------------+-------------+
在这张表中,我已经有如下记录:
id: 1, label: 'café'
现在我想添加更多记录,如下所示:
id: auto, label: 'cafe'
但是当我尝试插入时,出现重复错误
(1062, "Duplicate entry 'cafe' for key 'label_2'") [SQL: u'INSERT INTO vocabulary (label) VALUES (%s)'] [parameters: (u'cafe',)]
在这种情况下你们能帮帮我吗? 关于我的数据库的更多信息:字符集:utf8,整理:utf8mb4_unicode_ci
更新:创建表
CREATE TABLE `labels` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`label` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `label_2` (`label`),
KEY `label` (`label`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
【问题讨论】:
-
如果您的 Python 代码没有正确地将 UTF-8 数据发送到 MySQL,这可能比这更复杂。
-
绝对不是,我已经尝试执行原始 MySQL 查询
INSERT INTO labels (label) VALUES ("cafe");=> 相同的错误 -
你能和我们分享一下你桌子的
CREATE TABLE吗? -
@GiorgosBetsos:更新
-
这是
COLLATE用于列的问题。显然使用默认排序规则并不能帮助数据库服务器区分e和é。检查下面给出的答案指向正确的方向(不知道为什么它被否决!)。