是否可以在建立连接后检查MySQL数据库是否存在。

我知道如何检查一个表是否存在于一个DB,但我需要检查DB是否存在。如果不是,我必须调用另一段代码来创建它并填充它。

我知道这一切听起来有点不优雅-这是一个快速和肮脏的应用程序。


当前回答

检查数据库是否存在的一个简单方法是:

SHOW DATABASES LIKE 'dbname';

如果名称为'dbname'的数据库不存在,则得到一个空集。如果它存在,就得到一行。

其他回答

另一个php解决方案,但与PDO:

<?php
try {
   $pdo = new PDO('mysql:host=localhost;dbname=dbname', 'root', 'password', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]);
   echo 'table dbname exists...';
}
catch (PDOException $e) {
   die('dbname not found...');
}

检查数据库是否存在的一个简单方法是:

SHOW DATABASES LIKE 'dbname';

如果名称为'dbname'的数据库不存在,则得到一个空集。如果它存在,就得到一行。

使用bash:

if [ "`mysql -u'USER' -p'PASSWORD' -se'USE $DATABASE_NAME;' 2>&1`" == "" ]; then
    echo $DATABASE_NAME exist
else
    echo $DATABASE_NAME doesn't exist
fi
SELECT SCHEMA_NAME
  FROM INFORMATION_SCHEMA.SCHEMATA
 WHERE SCHEMA_NAME = 'DBName'

如果你只是需要知道一个db是否存在,这样当你尝试创建它时就不会得到一个错误,只需使用(从这里):

CREATE DATABASE IF NOT EXISTS DBName;

检查PHP中是否存在数据库的一个好方法是:

$mysql = mysql_connect("<your host>", "root", "");

if (mysql_select_db($mysql, '<your db name>')) {
    echo "Database exists";
} else {
    echo "Database does not exist";
}

这是我常用的方法。