Как импортировать базу данных MySQLdump с помощью DROP TABLE IF EXISTS? - PullRequest
0 голосов
/ 11 октября 2011

Я хочу скопировать несколько БД с сервера1 на сервер2, и я хочу удалить любые БД на сервере2, которые конфликтуют с импортированными БД, а затем импортировать БД.

Я использую это для импорта:

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

Я использовал phpMyAdmin для выполнения нескольких экспортов, но они совершенно непригодны.

Проблема заключается в том, что phpMyAdmin выдает либо:

  DROP DATABASE `database1`;

(это приводит кошибка # 1008 - Невозможно удалить базу данных «database1»; база данных не существует)

ИЛИ:

  CREATE DATABASE `database1`;

(это приводит к ошибке # 1007 - Невозможно создать базу данных »база данных1 '; база данных существует)

Но НЕ :

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

(очевидно, «ЕСЛИ НЕ СУЩЕСТВУЕТ» избыточно, но мне там понравилось для подтверждения)

Итак, для решения этой проблемы мне либо понадобятся некоторые параметры командной строки ИЛИ Мне нужно выяснить, где phpmyadmin создает строки запроса и добавить «IF EXISTS» в опцию DROP TABLE, и это решило бывсе.

Есть идеи?Спасибо.

1 Ответ

1 голос
/ 11 октября 2011

Воспользуйтесь инструментами резервного копирования и восстановления MySQL в dbForge Studio for MySQL . Включите опцию «Включить IF EXISTS в оператор DROP», и вы получите скрипт, подобный следующему:

--
-- 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;

Поддерживается командная строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...