2016-09-28 17 views
1

私はFlask、Flask-SqlAlchemy、Flask-Migrateを使用して自分のモデルを管理しています。最新のデータベース状態で、新しい移行ファイルpython manage.py db migrate -m'test migrationを作成すると、空の移行ファイルは作成されません。その代わりに、いくつかのユニークなキー制約と外部キー制約を作成して削除しようとします。なぜFlask Migrateは空のマイグレーションファイルを作成しませんか?

これはなぜこのように動作するのでしょうか?

答えて

2

現在の移行からモデルに変更を加えていないが、空ではない移行ファイルが生成された場合、モデルとデータベースとの同期が失われたことが示唆され、新しいマイグレーションは、ミスマッチなものだけです。

マイグレーションにいくつかの制約を落として他の制約を追加するコードが含まれていると言えば、制約名が変更されている可能性が高いと思います。あるいは、SQLAlchemyのバージョンを、名前。

+0

こんにちは@ミゲル、あなたの返信ありがとう!今のところ、私の移行がなぜ非空の移行を作り出すのか分からない。 SqlAlchemyのバージョンは同じです(Flask-SqlAlchemy 2.1)。そしてモデルの変更(上記の制約に直接関係するもの)。私はこの空でない移行ファイルを受け入れており、その後の移行は空であることがわかります。私はこのソリューションが私の場合に受け入れられるかどうかを確認します – swdev

+0

あなたのソリューションはうまくいくかもしれませんが、新しいデータベースの生成をテストし、移行リスト全体を通して実行してください。スクラッチ。 – Miguel

+0

私はその既存の移行を作成し、それに続いて次の移行を作成することを知らせたいだけです。私は最初に何がそのエラーを作成するか分からないが。ただし、データベースはPostgreSQLを使用してバックアップおよび後で復元されました。プロセスがインデックス名を変更すると思っていただけです... – swdev

関連する問題