首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果数据库存在,如何退出MySQL脚本

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

Stack Overflow用户
提问于 2016-01-29 00:50:03
回答 3查看 2.6K关注 0票数 1

我在docker中有一个SQL脚本,但我只想在以前没有运行过的情况下运行该脚本。所以,我想我应该是这样的:

代码语言:javascript
复制
IF dbname EXISTS
THEN
    exit;
END IF;

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

代码语言:javascript
复制
SELECT IF(EXISTS(SELECT SCHEMA_NAME 
    FROM INFORMATION_SCHEMA.SCHEMATA 
    WHERE SCHEMA_NAME = 'mysql'),true,false);

但我想不出如何将其转换为exit语句

代码语言:javascript
复制
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 )

EN

回答 3

Stack Overflow用户

发布于 2016-01-29 01:02:38

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

代码语言:javascript
复制
IF SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA 
WHERE SCHEMA_NAME = 'demo-database' then

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

ENDIF

这可能行得通。至少对我来说是这样的。)

票数 1
EN

Stack Overflow用户

发布于 2016-01-31 06:27:04

经过进一步的思考和研究,我认为这是MySQL控制台的一个局限性。我把我的SQL“脚本”当作一个脚本,实际上它只是一个命令列表。MySQL中的IF语句实际上被设计为SELECT语句的一部分。因此,我决定在bash脚本中运行SQL命令。

票数 0
EN

Stack Overflow用户

发布于 2016-01-31 07:01:55

不要在脚本存在的情况下导致某个操作,而是只在脚本不存在的情况下才执行原始操作,例如

代码语言:javascript
复制
CREATE DATABASE IF NOT EXISTS DBName;
///all the rest of your SQL, 

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35067278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档