【问题标题】:SQL Server Migration To Refactored MySQL w/ InnoDB Key & Constraint IssuesSQL Server 迁移到重构 MySQL 与 InnoDB 键和约束问题
【发布时间】:2010-11-14 00:44:09
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 除非你有一个循环依赖,否则必须有一些顺序可以插入迁移的记录而不违反任何关键约束。
  • 没有循环引用,但感谢您的提示。

标签: mysql sql-server migration innodb key


【解决方案1】:

事实证明这是可行的:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 2010-12-07
      • 1970-01-01
      • 2019-05-13
      • 2016-03-19
      • 2020-10-23
      • 1970-01-01
      • 2015-10-27
      • 2017-06-17
      相关资源
      最近更新 更多