mysqladmin 没有选项可以将“IF EXISTS”添加到其删除数据库。它被硬编码为仅接受数据库名称,而不接受任何其他语法。
这里是 line of code,它在 mysqladmin 客户端中格式化 DROP DATABASE 语句:
sprintf(name_buff, "drop database `%.*s`", FN_REFLEN, db);
但你可能不需要 IF EXISTS。只需尝试删除数据库。如果不存在,客户端会打印错误,但效果是一样的。
这是我刚刚在我的 shell 中运行的一个演示:
$ mysqladmin -f drop test2
mysqladmin: DROP DATABASE test2 failed;
error: 'Can't drop database 'test2'; database doesn't exist'
客户端将以状态 1 退出。如果您不喜欢这样(例如,如果您在具有 set -e 有效的 shell 脚本中运行),您可以禁止退出状态:
mysqladmin -f drop test2 || true
如果你不喜欢看到错误信息,你可以重定向它:
mysqladmin -f drop test2 2>/dev/null || true