0

我必须通过 bash 脚本执行以下 mysql 命令:

drop table $tablename \; | mysql -uusername -ppassword $dbname

该命令执行了很多次,但问题是$tablename可以在命令运行之前删除。当它已经被删除时,我在命令提示符下收到以下消息:

ERROR 1051 (42S02) at line 1: Unknown table 'tablename'
database table tablename, not found

有没有办法过滤掉这个错误消息,这样我就不会收到垃圾邮件了?

IF EXISTS编辑:在创建表时是否有类似的解决方法?为了防止得到以下Table already exists.

好的,IF NOT EXISTS谢谢

4

3 回答 3

2

添加if exists

 drop table if exists $tablename

从文档中:

使用 IF EXISTS 可防止不存在的表发生错误。使用 IF EXISTS 时,会为每个不存在的表生成一个 NOTE。

于 2013-08-05T08:59:52.433 回答
0

如果您查看DROP TABLE语法,您会发现有一个IF EXISTS子句旨在处理表可能不存在的事实。

因此,使用...

DROP TABLE IF EXISTS $tablename \; | mysql -uusername -ppassword $dbname

...将解决此问题。

于 2013-08-05T09:00:52.933 回答
-2

我还发现... 2>/dev/null可以使用。这会将输出写入/dev/null,并且在命令提示符下不输出任何内容...

drop table $tablename \; | mysql -uusername -ppassword $dbname 2>/dev/null

/dev/null 被称为黑洞

于 2013-08-05T11:57:00.597 回答