请考虑这段代码:
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
给出该子句,则该语句会对每个不存在的指定用户生成警告,而不是错误。
答案2
你也可以用力使用mysql
工具忽略所有命令的错误:
如果您希望脚本继续运行,即使其中的某些语句产生错误,您应该使用
--force
命令行选项。
IEmysql --force -u root -p << ...