0

我正在将最初使用 SQL Server 2005、ASP.NET 和 Windows 2003 的 Web 应用程序及其基础架构重新开发为 LAMMP(当然,对于 memcached 的额外 M)堆栈,并且由于架构被大量重构(有很好的理由这样做)我必须编写自定义迁移应用程序。

问题是 InnoDB 主键 + 外键约束阻碍了我将数据插入其 MySQL/InnoDB 表的能力。我已经尝试过使用 DISABLE KEYS 和 FOREIGN_KEY_CHECKS 方法并临时删除主节点上的自动增量,当尝试进行这些更改之一(例如 DISABLE KEYS)时会引发错误,因为它在 InnoDB 中不受支持或尝试删除在空表中的列上分配主键或迁移应用程序在表为空时输入记录时抛出错误说键已存在。除了首先删除所有密钥然后再将它们放回去之外,还有什么可以做的(我认为这也会给我带来地狱)?

谢谢!

4

2 回答 2

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";
于 2009-07-25T19:36:15.610 回答
0

我更喜欢第三方应用程序来迁移我的数据,我在将 MS SQL 迁移到 Foxpro 时使用数据加载器,它工作得很好,它几乎可以迁移任何数据库。

免费下载:http ://www.dbload.com

于 2009-08-25T08:51:20.720 回答