mysqladmin -uroot create foo returns an exit status of 1 if foo exists, and 0 otherwise, but of course it will also create the database if it doesn't already exist. Is there some easy way to simply check whether a database exists?
|
feedback
|
|
| |||||||
feedback
|
|
Databases in MySQL are folders in the filesystem. That make it damn easy to find whether a database exists:
In this case, | ||||
|
feedback
|
|
A bit hacky, but this will print 1 if foo does not exist, 0 otherwise:
| |||
|
feedback
|
|
From http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ this is more akin to what I wanted: $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. exiting" exit; fi | |||
|
feedback
|
|
I realize this was answered a long time ago, but it seems much cleaner to me to do this:
If the database exists, this will produce no output and exit with returncode == 0. If the database does not exist, this will produce an error message on stderr and exit with returncode == 1. So you'd do something like this:
This operates nicely with shell scripts, doesn't require any processing of the output, and doesn't rely on having local filesystem access. | |||
|
feedback
|