代码之家  ›  专栏  ›  技术社区  ›  ssc

MySQL:DECLARE CONTINUE处理程序在出现错误时继续,并打印警告

  •  2
  • ssc  · 技术社区  · 14 年前

    我编写了一个python脚本,它从遗留数据库读取数据并生成一个SQL脚本,该脚本使用许多非常相似的sqlinsert语句将这些值从遗留数据库插入到新数据库中。SQL脚本每次遇到带有错误消息的重复条目时都会停止

    第3086行出现错误1062(23000):重复输入“56.450000000--3.366670000-121”键“lat\u lon\u height”

    这正是它应该做的。但是,目前,我只希望脚本继续运行,不要插入重复的条目,而是打印一个关于它们的警告。我尝试在脚本的开头安装continue处理程序,方法如下 the MySQL docs some other online resources ,但它们都只是创建了一个语法错误:

    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;
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Hammerite    14 年前

        2
  •  0
  •   Community CDub    8 年前

    好的,让SQL脚本简单地打印所有发生的错误的一种方法是使用--force命令行选项,如中所示

    mysql --force < my_insertion_script.sql
    

    this 可能会有帮助。