質問

South で Django と mysql アプリをアップグレードするときに問題が発生します。

django sqlall コマンドによって生成されたコードを使用して SQL ベースのアップグレードを実行しようとしましたが、同様の問題が発生しました。

SQLコードは次のとおりです。

CREATE TABLE `programmations_basissupport` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `value` numeric(6, 0) NOT NULL
)

ALTER TABLE `programmations_concert` ADD `basis_support_id` integer AFTER program_status_id;

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

FK 制約を追加するとエラーが発生します。

ERROR 1005 (HY000): Can't create table 'apidev_mnl.#sql-106e_632b00a' (errno: 150)

誰かアイデアはありますか?

アップデート:DEFAULT 値が欠落していますが、django モデルにdefault='' を追加しても、外部キーの作成は失敗します。

ご協力いただきありがとうございます

役に立ちましたか?

解決 3

回避策のおかげで、最終的に問題を解決できました。変更は私の開発マシンでは正常に機能しますが、ホストでは失敗します。理由は見つかりませんでしたが、エクスポートして開発マシンに移行し、再インポートすることで機能するようになりました。

他のヒント

すでに存在するシンボル/名前を持つ制約を追加しようとしているようです。

ALTER TABLE `programmations_concert` ADD CONSTRAINT `basis_support_id_refs_id_1e4ed8d7` FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

は次のように変更できます。

ALTER TABLE `programmations_concert` ADD FOREIGN KEY (`basis_support_id`) REFERENCES `programmations_basissupport` (`id`);

同じ問題がありました。そして最後に、参照テーブルのフィールドは「署名されていない」が、参照テーブルでは署名されていないことがわかりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top