Разрешение дубликата первичного ключа при импорте MySQL - PullRequest
1 голос
/ 08 марта 2012

Я хочу добавить таблицу комментариев с одного сайта WordPress на другой. Пользователи разные. Когда я импортирую комментарии с сайта B на A, я сталкиваюсь с проблемой дублирования ключа; значение comment_id уже занято.

Так как мне решить эту проблему и добавить таблицу в простой файл .sql? Придется ли мне брать информацию о пользователе, генерировать нового пользователя, проверять комментарии, сделанные на сайте B, извлекать контент и postID, затем возвращаться на сайт A и заново создавать комментарий для вновь созданного пользователя!

Какая головная боль! БЛАГОДАРЯ.

1 Ответ

0 голосов
/ 08 марта 2012

если ваша единственная проблема - проблема с дублирующимся ключом, перейдите в конец файла sql после ENGINE=MyISAM и сделать это ENGINE=MyISAM AutoIncrement=a nubmer above the last id in the new database

или

Запросите базу данных A для последнего идентификатора, затем добавьте его и используйте для нового запроса вставки.

Пример 1:

CREATE TABLE IF NOT EXISTS `movies` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `year` int(4) NOT NULL,
  `size` varchar(255) NOT NULL,
  `added` date NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `title` (`title`,`year`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Вставки из моего дампа:

INSERT INTO `movies` (`title`, `year`, `size`, `added`) VALUES
('[REC] 2', 0, '716688', '2011-09-23'),
('5 Days of War', 0, '1435406', '2012-01-09'),
('[REC]', 0, '1353420800', '2011-11-06');

Посмотрите, как я не включил PRIMARY KEY (id) в мои включения, но он все равно проверит мои UNIQUE KEY и проверит, существует ли заголовок. Просто небольшая демонстрация, которая, надеюсь, поможет. Если ваша таблица уже существует в новой базе данных, просто перейдите к вставкам и не включайте первичный ключ, и при новой вставке он будет автоматически установлен на следующее доступное значение.

...