Mysql CLI - 即使操作失败也继续执行

Mysql CLI - 即使操作失败也继续执行

请考虑这段代码:

    mysql -u root -p << MYSQL
        drop user '${test}'@'localhost';
        drop database ${test};

        create user '${test}'@'localhost' identified by '${psw}';
        create database ${test};
        GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
    MYSQL

对于第一个命令,代码输出以下错误drop user '${test}'@'localhost';

错误 1396 (HY000):“${test}”@“localhost”的 DROP USER 操作失败


我的问题

如果出现此错误,如何使程序忽略该错误,以便执行不会中断?

例如,我如何确保程序会以这种方式运行:

“如果您已经拥有 的用户${test},则删除,如果没有,则继续创建它”。

当然,处理数据库实例的第二个 drop 命令也存在同样的问题。

答案1

使用IF EXISTS条款:

DROP USER IF EXISTS '${test}'@'localhost';

如果您尝试删除不存在的帐户,则会发生错误。如果IF EXISTS给出该子句,则该语句会对每个不存在的指定用户生成警告,而不是错误。

https://dev.mysql.com/doc/refman/5.7/en/drop-user.html

答案2

你也可以用力使用mysql工具忽略所有命令的错误:

如果您希望脚本继续运行,即使其中的某些语句产生错误,您应该使用--force命令行选项。

IEmysql --force -u root -p << ...

相关内容