【问题标题】:Need MySQL 4 to ignore ALTER TABLE errors需要 MySQL 4 来忽略 ALTER TABLE 错误
【发布时间】:2010-10-07 21:23:10
【问题描述】:

我有一个在特定条件下自动执行的 MySQL 脚本。该脚本执行ALTER TABLE 命令,因为数据库中需要该列,但它可能有也可能没有...

如果列不存在,是否可以让 MySQL 4 执行 ALTER TABLE 语句或忽略此单个命令的 重复列 错误并允许脚本继续执行?

【问题讨论】:

    标签: mysql alter-table mysql4


    【解决方案1】:

    ALTER [IGNORE] TABLE 只会忽略某些错误,例如添加新 UNIQUE 索引时出现重复键错误或 SQL 模式错误。

    http://dev.mysql.com/doc/refman/4.1/en/alter-table.html

    有关您正在使用的“脚本”的更多详细信息将有助于回答问题。例如,在 python 中,错误会引发异常,然后可以捕获并处理或忽略该异常。

    [编辑] 从下面的评论中,您似乎正在寻找 mysql -f 命令行选项。

    【讨论】:

    • 这是一个 MySQL 导入,通过从命令行运行 mysql < file 完成。导入过程是自动化的,所以我试图避免“接触”调用者。编写一个 bash 来检查这一点很容易,但我宁愿不修改导入脚本。
    • 从 mysql --help 你正在寻找 -f 选项:-f, --force 即使我们得到一个 sql 错误也继续。
    【解决方案2】:

    您可以在尝试添加列之前先检查表架构吗?但是,我强烈怀疑您需要动态添加列的设计。有些事情不太对劲。你能详细解释一下这个要求吗?我敢肯定还有其他更清洁的方法。

    【讨论】:

    • 有时您必须通过自动方式(例如在安装软件更新时)更新已经包含数据的生产数据库。我正是因为这个问题才提出这个问题的,如果没有事先将架构设计为易于版本化,就很难找到解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2011-02-24
    • 2013-01-12
    • 2015-02-14
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多