mysqladmin -uroot create foo
如果foo
存在,则返回退出状态1 ,否则返回0,但是当然,如果退出数据库还不存在,它也会创建数据库。有一些简单的方法可以简单地检查数据库是否存在吗?
mysqladmin -uroot create foo
如果foo
存在,则返回退出状态1 ,否则返回0,但是当然,如果退出数据库还不存在,它也会创建数据库。有一些简单的方法可以简单地检查数据库是否存在吗?
Answers:
我知道很久以前就已经回答了这个问题,但是这样做对我来说似乎更干净:
mysql -u root -e 'use mydbname'
如果数据库存在,则不会产生任何输出,并以returncode == 0退出。
如果数据库不存在,这将在stderr上生成错误消息,并以returncode == 1退出。因此,您将执行以下操作:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
这在shell脚本中可以很好地运行,不需要对输出进行任何处理,也不依赖于对本地文件系统的访问。
mysql -e "SHOW DATABASES LIKE 'foo'"
应该可以帮助您。
http://dev.mysql.com/doc/refman/5.1/zh-CN/show-databases.html
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
。
来自http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/,这更类似于我想要的内容:
DBNAME="dblookingfor"
DBEXISTS=$(mysql --batch --skip-column-names -e "SHOW DATABASES LIKE '"$DBNAME"';" | grep "$DBNAME" > /dev/null; echo "$?")
if [ $DBEXISTS -eq 0 ];then
echo "A database with the name $DBNAME already exists."
else
echo " database $DBNAME does not exist."
fi