是否可以在建立连接后检查MySQL数据库是否存在。
我知道如何检查一个表是否存在于一个DB,但我需要检查DB是否存在。如果不是,我必须调用另一段代码来创建它并填充它。
我知道这一切听起来有点不优雅-这是一个快速和肮脏的应用程序。
是否可以在建立连接后检查MySQL数据库是否存在。
我知道如何检查一个表是否存在于一个DB,但我需要检查DB是否存在。如果不是,我必须调用另一段代码来创建它并填充它。
我知道这一切听起来有点不优雅-这是一个快速和肮脏的应用程序。
当前回答
有了这个脚本,你可以得到是否数据库存在,如果它不存在,它不会抛出异常。
SELECT
IF(EXISTS( SELECT
SCHEMA_NAME
FROM
INFORMATION_SCHEMA.SCHEMATA
WHERE
SCHEMA_NAME = 'DbName'),
'Yes',
'No') as exist
其他回答
SELECT IF('database_name' IN(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA), 1, 0) AS found;
检查PHP中是否存在数据库的一个好方法是:
$mysql = mysql_connect("<your host>", "root", "");
if (mysql_select_db($mysql, '<your db name>')) {
echo "Database exists";
} else {
echo "Database does not exist";
}
这是我常用的方法。
这是我在bash脚本中做这件事的方式:
#!/bin/sh
DATABASE_USER=*****
DATABASE_PWD=*****
DATABASE_NAME=my_database
if mysql -u$DATABASE_USER -p$DATABASE_PWD -e "use $DATABASE_NAME";
then
echo "Database $DATABASE_NAME already exists. Exiting."
exit
else
echo Create database
mysql -u$DATABASE_USER -p$DATABASE_PWD -e "CREATE DATABASE $DATABASE_NAME"
fi
我只是使用以下查询:
"USE 'DBname'"
然后检查结果是否为FALSE。 否则,可能会出现拒绝访问错误,但我不能知道这一点。 因此,在涉及特权的情况下,可以使用:
"SHOW DATABASES LIKE 'DBname'"
如前所述。
对于那些使用php与mysqli然后这是我的解决方案。我知道答案已经回答了,但我认为这将是有帮助的答案作为一个mysqli准备的声明。
$db = new mysqli('localhost',username,password);
$database="somedatabase";
$query="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?";
$stmt = $db->prepare($query);
$stmt->bind_param('s',$database);
$stmt->execute();
$stmt->bind_result($data);
if($stmt->fetch())
{
echo "Database exists.";
}
else
{
echo"Database does not exist!!!";
}
$stmt->close();