如果数据库存在,如何退出MySQL脚本

时间:2016-01-28 16:50:03

标签: mysql if-statement exit

我在docker中有一个SQL脚本,但我只想运行以前没有运行过的脚本。所以,我虽然会有类似的东西:

IF dbname EXISTS
THEN
    exit;
END IF;

环顾四周,如果数据库存在,我设法找到将返回0或1的代码:

SELECT IF(EXISTS(SELECT SCHEMA_NAME 
    FROM INFORMATION_SCHEMA.SCHEMATA 
    WHERE SCHEMA_NAME = 'mysql'),true,false);

但我无法弄清楚如何将其变成退出声明

IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mysql')
THEN
    exit;
END IF;

给出了多个语法错误。

我正在使用CentOS 6.7和MySQL服务器5.1.73(在CentOS 7之前忘记它不是MariaDB)

3 个答案:

答案 0 :(得分:1)

你是什​​么意思?脚本是否创建了任何内容? 如果是,你可以使用这个技巧:

IF SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA 
WHERE SCHEMA_NAME = 'demo-database' then

  CREATE DATABASE `demo-database`
  // do other stuff ect

ENDIF

这可能有用。至少对我来说它确实如此;)

答案 1 :(得分:0)

经过进一步的思考和研究,我认为这是MySQL控制台的限制。我在处理我的SQL"脚本"作为一个脚本,它实际上只是一个命令列表。 MySQL中的IF语句确实是SELECT语句的一部分。所以,我决定在bash脚本中运行SQL命令。

答案 2 :(得分:0)

如果脚本存在,而不是引起某个操作,只有当脚本存在 NOT 时才会发生原始操作,例如

CREATE DATABASE IF NOT EXISTS DBName;
///all the rest of your SQL, 

这意味着只有在数据结构不存在的情况下才会运行SQL。这看起来像你想要的。