サーバー上に次のテーブルがあります。
CREATE TABLE routes (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
from_lat double NOT NULL,
from_lng double NOT NULL,
to_lat double NOT NULL,
to_lng double NOT NULL,
distance int(11) unsigned NOT NULL,
drive_time int(11) unsigned NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY route (from_lat,from_lng,to_lat,to_lng)
) ENGINE=InnoDB;
ポイント A (from_lat、from_lng) からポイント B (to_lat、to_lng) までのルーティング情報を保存しています。座標には固有のインデックスがあります。
ただし、データベースには、私を混乱させる 2 つのエントリがあります。
+----+----------+----------+---------+---------+----------+------------+
| id | from_lat | from_lng | to_lat | to_lng | distance | drive_time |
+----+----------+----------+---------+---------+----------+------------+
| 27 | 52.5333 | 13.1667 | 52.5833 | 13.2833 | 13647 | 1125 |
| 28 | 52.5333 | 13.1667 | 52.5833 | 13.2833 | 13647 | 1125 |
+----+----------+----------+---------+---------+----------+------------+
それらはまったく同じです。
を使用してデータベースをエクスポートしようとせずmysqldump
、再インポートしようとすると、エラーが発生します。
ERROR 1062 (23000): Duplicate entry '52.5333-13.1667-52.5833-13.2833' for key 'route'
それらに一意のキーがあるのに、これがデータベースにあるとはどういうことでしょうか? MySQL はそれらを拒否すべきではありませんか?