首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果命令行中不存在参数,则MySQL创建数据库

如果命令行中不存在参数,则MySQL创建数据库
EN

Stack Overflow用户
提问于 2018-09-02 07:19:02
回答 1查看 2K关注 0票数 0

我正在尝试使用Java备份和恢复MySQL DB。我可以使用以下命令备份DB:

代码语言:javascript
复制
C:/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump -u root --password=password myDbName -r "C:/backup.sql"

并使用以下Java代码来执行它:

代码语言:javascript
复制
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(commandString);

在创建备份之后,我想用它恢复DB。我可以通过命令恢复备份文件:

代码语言:javascript
复制
C:/Program Files/MySQL/MySQL Server 5.7/bin/mysql -u root --password=password myDbRestore<"C:/backup.sql"

问题是,在执行还原之前,我想检查数据库是否存在。是否有MySQL执行CREATE DATABASE IF NOT EXISTS的参数?

换句话说,如何在一个语句/Java中执行以下命令:

代码语言:javascript
复制
C:/Program Files/MySQL/MySQL Server 5.7/bin/mysql -u root --password=password
create database if not exists myDbRestore;
use myDbRestore;
source C:\backup.sql;
EN

回答 1

Stack Overflow用户

发布于 2018-09-02 07:33:09

没有真正直接的方法来实现这一点,但您可以尝试这样做:

  • 转储数据库时,将--no-create-db传递给mysql转储。它将省略create语句。
  • 为了恢复第一次运行` `mysql -uroot -password=password -e,在运行转储文件的源之前,"create“。

请注意,这可能不是使用MySQL进行备份的最优雅方法,原因如下:

  • 您已经在java应用程序中获得了mysql硬编码的凭据。如果您使用例如github来存储您的代码,其他人可以看到它们。
  • 您正在对MySQL安装的路径进行硬编码。此程序现在将在您的计算机上工作,但很可能不会:。
    • 一旦更新到不再安装到C:/Program Files/MySQL/MySQL Server 5.7/的较新的C:/Program Files/MySQL/MySQL Server 5.7/版本
    • 在某人的电脑上
    • 在另一个操作系统上

对于以上几点,由于您是如何构建备份的,我假设此备份仅适合本地用户吗?在这种情况下,编写一个简单的.bat文件可能是一个很好的选择,因为它将变得更短、更直接?

最好的,马提亚斯

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

https://stackoverflow.com/questions/52134824

复制
相关文章

相似问题

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