是否可以在建立连接后检查MySQL数据库是否存在。
我知道如何检查一个表是否存在于一个DB,但我需要检查DB是否存在。如果不是,我必须调用另一段代码来创建它并填充它。
我知道这一切听起来有点不优雅-这是一个快速和肮脏的应用程序。
是否可以在建立连接后检查MySQL数据库是否存在。
我知道如何检查一个表是否存在于一个DB,但我需要检查DB是否存在。如果不是,我必须调用另一段代码来创建它并填充它。
我知道这一切听起来有点不优雅-这是一个快速和肮脏的应用程序。
当前回答
CREATE SCHEMA IF NOT EXISTS `demodb` DEFAULT CHARACTER SET utf8 ;
其他回答
IF EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = N'YourDatabaseName')
BEGIN
-- Database exists, so do your stuff here.
END
如果你正在使用MSSQL而不是MySQL,可以从类似的线程中看到这个答案。
检查数据库是否存在的一个简单方法是:
SHOW DATABASES LIKE 'dbname';
如果名称为'dbname'的数据库不存在,则得到一个空集。如果它存在,就得到一行。
在使用like语句检查是否存在时要小心!
如果在一系列不幸的事件中,你的变量最终为空,你最终执行这个:
SHOW DATABASES like '' -- dangerous!
它将返回ALL数据库,从而告诉调用脚本它存在,因为返回了一些行。
使用“=”等号来测试是否存在是更安全、更好的做法。
正确和安全的测试方法应该是:
SHOW DATABASES WHERE `database` = 'xxxxx' -- safe way to test for existence
注意,您必须用反引号来包装列名数据库,在这种情况下不能使用宽松的语法。
这样,如果创建变量“xxxxx”的代码返回空,那么SHOW DATABASES将不会返回ALL数据库,而是返回一个空集。
CREATE SCHEMA IF NOT EXISTS `demodb` DEFAULT CHARACTER SET utf8 ;
检查PHP中是否存在数据库的一个好方法是:
$mysql = mysql_connect("<your host>", "root", "");
if (mysql_select_db($mysql, '<your db name>')) {
echo "Database exists";
} else {
echo "Database does not exist";
}
这是我常用的方法。