为什么这是一个重复的密钥?
mysql> describe tagged_chemicals;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| bar_code | text | NO | | NULL | |
| rfid_tag | text | NO | UNI | NULL | |
| checked_out | char(1) | NO | | N | |
+-------------+---------+------+-----+---------+-------+
3 rows in set (0.04 sec)
mysql> select * from tagged_chemicals;
+-------------+----------------------+-------------+
| bar_code | rfid_tag | checked_out |
+-------------+----------------------+-------------+
| 416444.0001 | 34443030304142453141 | N |
+-------------+----------------------+-------------+
1 row in set (0.00 sec)
mysql> INSERT INTO tagged_chemicals (rfid_tag, bar_code) VALUES("34443030304144393935", "412577.0001B");
ERROR 1062 (23000): Duplicate entry '34443030304144393935' for key 'rfid_tag'
答案 0 :(得分:4)
这是因为索引前缀。
前缀是实际放置到索引的字符数量。
如果前缀为1 - 则您将无法插入行ab
和aa
,因为它们的前缀值均为a
,因此会导致重复输入错误。
Prefix用于减少索引中存储的数据量,因为在大多数情况下,长字符串中只有几个字符足以加速查询。
更多详情请见:http://dev.mysql.com/doc/refman/5.5/en/create-index.html