2017-03-15 24 views
1

存在为题指出,我试图用mysqldump创建一个包含用的mysqldump如果没有1台

CREATE DATABASE IF NOT EXISTS 

但只输出表的文件创建数据库。我已经尝试了--databases,--tables等的多种组合,但是我无法得到它添加IF NOT EXISTS部分(它在那里但是被注释掉了),而且它似乎只适用于输出所有的表格。可能吗?

有些事情我已经试过:

添加CREATE DATABASE(但不包括IF NOT EXISTS部分),但输出的所有表:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI > outfile.sql 

输出1个表,但没有CREATE DATABASE:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options BBI table1 > outfile.sql 

给出了错误:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI.table1 > outfile.sql 

我将不得不诉诸使用

--ignore-table=<table> 

选项为每个表一个我不想要?这将是一个巨大的痛苦。

回答

0

我能够想出一个解决方法。上述命令使用exec()从PHP脚本执行。我将脚本改为首先做一个

show create database BBI 

查询。然后它修改从那个返回的语句来添加IF NOT EXISTS部分和USE BBI;声明。然后运行上面的第二个mysqldump语句,输出1个表,但没有CREATE DATABASE。然后它将CREATE DATABASE语句预加载到来自mysqldump的输出文件的开头,并且一切正常。