gpt4 book ai didi

sql - 尝试导入转储时出现重复条目​​错误

转载 作者:行者123 更新时间:2023-11-29 08:47:17 25 4
gpt4 key购买 nike

我在服务器上有下表:

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)的一些路由信息。坐标上有唯一的索引。

但是,数据库中有两个条目让我感到困惑:

+----+----------+----------+---------+---------+----------+------------+
| 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 不应该拒绝它们吗?

最佳答案

double 值是否可能略有不同,但仅在第 4 位数字之后?
如果导出和导入它们,它们将是相同的,这将导致唯一约束违规。

引用自this MySQL bug report :

When mysqldump dumps a DOUBLE value, it uses insufficient precision to distinguish between some close values (and, presumably, insufficient precision to recreate the exact values from the original database). If the DOUBLE value is a primary key or part of a unique index, restoring the database from this output fails with a duplicate key error.

尝试在逗号后面显示更多数字(具体方式取决于您的客户。)

关于sql - 尝试导入转储时出现重复条目​​错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12248490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com