2009-07-25 5 views
0

SQL Server 2005、ASP.NET & Windows 2003を使用してWebアプリケーションとそのインフラストラクチャを再開発していますが、LAMMP(memcachedの余分なM)スキーマは非常にリファクタリングされているので(私はそれを行うのに正当な理由があります)、カスタムの移行アプリケーションを作成する必要があります。リファクタリングされた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 AUTO_INCREMENT; 

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

SET FOREIGN_KEY_CHECKS = 1, UNIQUE_CHECKS = 1"; 
0

は私はMS SQLを移行されたとき、私は、データローダを使用して、私のデータを移行するためのサードパーティのapplpicationsを好む....

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

挿入レコードをFoxproには素晴らしい機能があり、ほぼすべてのデータベースを移行できます。

は無料ダウンロード:http://www.dbload.com

関連する問題