我正在审查/重新设计/重构数据库,并希望创建一个新数据库,以更智能的方式存储几乎相同的数据。“遗留”数据库中的问题之一是它没有正确使用键和索引,因此在不应该没有的地方存在重复的条目。
我编写了一个 python 脚本,它从遗留数据库读取数据并生成一个 SQL 脚本,该脚本反过来使用许多非常相似的 SQL INSERT 语句将这些值从遗留数据库插入到新数据库中。每次遇到带有错误消息的重复条目时,SQL 脚本都会停止
第 3086 行的错误 1062 (23000):重复条目 '56.450000000--3.366670000-121' 用于键 'lat_lon_height'
AFAICT 正是它应该做的。但是,目前,我只希望脚本继续运行,而不是插入重复的条目,而是打印关于它们的警告。我尝试按照MySQL 文档和其他一些在线资源,以多种方式在脚本开头安装 continue 处理程序,但所有这些都只会产生语法错误:
DECLARE CONTINUE HANDLER FOR 1062
SELECT 'Duplicate key in unique index';
或者
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
SELECT 'Duplicate key in unique index';
或者
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
BEGIN
SELECT 'Duplicate key in unique index';
END;
我究竟做错了什么 ?