如何使用'DROP TABLE IF EXISTS'导入多数据库MySQLdump?

时间:2011-10-11 06:14:57

标签: php mysql phpmyadmin

我想将一堆DB从server1复制到server2,我想删除server2上与导入的DB冲突的任何DB,然后导入DB。

我正在使用它来导入:

mysql -u root -p[password] < a_bunch_of_dbs.sql

我使用phpMyAdmin执行多次导出,但它们完全无法使用。

问题是phpMyAdmin要么:

  DROP DATABASE `database1`;

(导致错误#1008 - 无法删除数据库'database1';数据库不存在)

OR:

  CREATE DATABASE `database1`;

(导致错误#1007 - 无法创建数据库'database1';数据库存在)

但不

  DROP DATABASE IF EXISTS `database`;
  CREATE DATABASE IF NOT EXISTS `database1`;

(显然“IF NOT EXISTS”是多余的,但我喜欢那里的保证)

所以,为了解决这个问题,我需要一些命令行选项 OR 我需要找出phpmyadmin创建查询字符串的位置,并在DROP TABLE选项中添加“IF EXISTS”,这将解决一切。

有什么想法吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

利用MySQL Backup and Restore tools中的dbForge Studio for MySQL。打开“在DROP语句中包含IF EXISTS”选项,您将得到如下脚本:

--
-- Definition for database database1
--
DROP DATABASE IF EXISTS database1;
CREATE DATABASE database1
  CHARACTER SET latin1
  COLLATE latin1_swedish_ci;

-- 
-- Set default database
--

USE database1;

--
-- Definition for table dept
--
CREATE TABLE dept (
  id INT(11) NOT NULL AUTO_INCREMENT,
  dept_name VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 2
AVG_ROW_LENGTH = 16384
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

支持命令行。