如果数据库或表不存在,MySQL将死亡

时间:2014-07-11 20:58:16

标签: mysql phpmyadmin

我正在使用MySQL数据库将SQL脚本导入phpMyAdmin。我需要检查脚本顶部是否存在数据库,如果不存在则返回。

我知道如何检查数据库是否存在:

SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase')

但是当这个值为零时我不知道如何返回。我试过这个:

IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE schema_name = 'MyDatabase')) THEN
    BEGIN
        RETURN
    END;
END IF;

这会引发错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT (SELECT EXISTS(SELECT * FROM information_schema.schemata WHERE ' at line 1

我还需要检查该数据库中的表是否存在,如果不存在则返回。我再次知道如何检查表是否存在:

SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_schema = 'MyDatabase' AND table_name = 'MyTable')

但此时我不知道如何退出脚本。

修改

我发现我可以在脚本的顶部放置一个USE语句,如果该表不存在,将导致它抛出错误:

USE `MyDatabase`;

这种方法效果很好,但知道如何使用条件语句仍然很好。

1 个答案:

答案 0 :(得分:0)

您可以将其与if语句一起使用。

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName' 

喜欢:

 IF SCHEMA_NAME  = '' THEN
 --do this--
 ELSE
 -do this--