2009-07-25 3 views
0

Я перестраиваю веб-приложение и его инфраструктуру изначально с использованием SQL Server 2005, ASP.NET & Windows 2003 для LAMMP (дополнительно M для memcached, конечно) стека и поскольку схема сильно реорганизуется (с очень серьезной причиной для этого), я должен написать специальное приложение для миграции.Переключение SQL Server в Рефакторинг MySQL с проблемами и ограничениями InnoDB

Проблема заключается в ограничениях первичного + внешнего ключа InnoDB, которые препятствуют моей вставке данных в его таблицы MySQL/InnoDB. Я уже пробовал использовать методы DISABLE KEYS & FOREIGN_KEY_CHECKS и временно удалять автоматическое приращение на первичном, когда он либо бросает ошибку при попытке сделать одно из этих изменений, например DISABLE KEYS, так как он не поддерживается в InnoDB или пытается удалить назначение первичного ключа в столбце в пустой таблице или ошибка переноса приложения, говорящая о том, что ключ уже существует при вводе записи, когда таблица пуста. Есть ли что-то еще, что можно сделать за пределами этого, кроме того, что сначала удалить все ключи и вернуть их обратно (что, я полагаю, тоже даст мне ад)?

Спасибо!

+0

Если у вас есть циклическую зависимость должна быть какой-то порядок, в котором перенесенные записи могут быть вставлены без нарушения каких-либо ключевых ограничений. – Rafe

+0

Нет круглых ссылок, но спасибо за подсказку. –

ответ

0

Оказывается, это работает:

ALTER TABLE `site_oltp`.`members` MODIFY COLUMN `id` INT(11) NOT NULL; 
SET FOREIGN_KEY_CHECKS = 0, UNIQUE_CHECKS = 0; 

вставки записи ....

ALTER TABLE `site_oltp`.`members` MODIFY COLUMN `id` INT(11) NOT NULL AUTO_INCREMENT; 

ALTER TABLE `site_oltp`.`members` AUTO_INCREMENT = (LAST_ID_GOES_HERE + 1); 

SET FOREIGN_KEY_CHECKS = 1, UNIQUE_CHECKS = 1"; 
0

Я предпочитаю applpications стороннего для миграции моих данных, я использую загрузчик данных, когда я был мигрировать MS SQL для Foxpro он отлично работает, и он может мигрировать почти любую базу данных.

Скачать: http://www.dbload.com