2

モデルのユーザーに外部キーを追加しましたが、Southを使用してデータベースを移行しようとすると、次のエラーが発生します。

_mysql_exceptions.OperationalError: (1067, "Invalid default value for 'user_id'")

Southは、SQLコマンドを実行することでエラーから回復できる可能性があると言っています。

! You *might* be able to recover with:   = 
    ALTER TABLE `main_deal` DROP COLUMN `user_id` CASCADE; []

SQLコマンドを実行しようとしましたが、次のエラーが発生します。

#1091 - Can't DROP 'user_id'; check that column/key exists

モデルに「user_id」を追加し、デフォルト値を1に設定する必要がありますか?

編集:これを発生させるためにモデルに追加したコードは次のとおりです。

user = models.ForeignKey(User)

次に、Southを使用してモデルを移行しました。

4

2 に答える 2

1

コマンドを実行するとschemamigration、デフォルト値についていくつか質問されるはずです。あなたが間違った答えをした場合、それはあなたが説明する問題を引き起こしたかもしれません。

実際の移行ファイルを開いてforward上部にあるメソッドを取得し、ここに投稿できれば、何が悪かったのかを理解できるはずです。

于 2011-04-05T07:45:00.287 に答える
0

デフォルト値を指定せずにnull許容でないユーザーフィールドを指定したため、問題があると思います。デフォルト値を指定する必要があります。user = models.ForeignKey(User, default=foo)またはユーザーフィールドにnullを許可するuser = models.ForeignKey(User, null=True)

ところで、southの最新バージョンは、移行が作成されるときにデフォルト値を要求すると思います。どのバージョンを使用していますか?

于 2011-04-05T07:55:32.073 に答える