2

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

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)

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

更新:デフォルト値が欠落しているが、djangoモデルにdefault =''を追加しても、外部キーの作成は失敗します。

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

4

3 に答える 3

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`);
于 2010-10-06T23:47:44.663 に答える
2

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

于 2010-06-10T09:17:52.493 に答える
1

回避策のおかげで、ようやく問題を修正しました。変更は、ホストで失敗している間、開発マシンで正常に機能します。理由はわかりませんでしたが、エクスポート、開発マシンでの移行、再インポートを行うことで、正常に機能させることができました。

于 2010-05-27T07:32:01.920 に答える