0

なぜこれが重複キーなのですか?

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'
4

1 に答える 1

4

これは、インデックスプレフィックスが原因で発生します。

プレフィックスは、実際にインデックスに配置された文字の量です。

abプレフィックスが1-の場合、行とを挿入することはできません。これaaは、両方のプレフィックス値aが重複エントリエラーの原因となるためです。

ほとんどの場合、長い文字列から数文字でクエリを高速化できるため、プレフィックスはインデックスに格納されるデータの量を減らすために使用されます。

詳細については、http://dev.mysql.com/doc/refman/5.5/en/create-index.htmlをご覧ください。

于 2012-04-24T07:17:46.413 に答える