【问题标题】:drop database if exists using mysqladmin in linux如果存在,则在 linux 中使用 mysqladmin 删除数据库
【发布时间】:2020-04-20 04:03:44
【问题描述】:

我正在寻找从 mysql 中删除数据库的命令。我想在终端中执行命令而不是使用 mysql 查询。使用here 答案我发现我可以使用

从终端删除数据库

mysqladmin -h[hostname/localhost] -u[username] -p[password] drop [database]

如何使用 if-exists 条件做同样的事情?

【问题讨论】:

  • 你在哪里考虑编写这个IF 语句?

标签: mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您是否尝试使用“e”参数,例如: mysql -u root -p somedb -e "select * from mytable" ?

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2011-11-23
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 2019-03-06
      • 2021-01-12
      相关资源
      最近更新 更多