SQLAlchemy Migrate を使用してデータベースの変更を追跡していますが、外部キーの削除に関する問題が発生しています。2 つのテーブルがあります。t_new は新しいテーブルで、t_exists は既存のテーブルです。t_new を追加してから、t_exists に外部キーを追加する必要があります。次に、操作を元に戻すことができる必要があります(これは私が問題を抱えている場所です)。
t_new = sa.Table("new", meta.metadata,
sa.Column("new_id", sa.types.Integer, primary_key=True)
)
t_exists = sa.Table("exists", meta.metadata,
sa.Column("exists_id", sa.types.Integer, primary_key=True),
sa.Column(
"new_id",
sa.types.Integer,
sa.ForeignKey("new.new_id", onupdate="CASCADE", ondelete="CASCADE"),
nullable=False
)
)
これはうまくいきます:
t_new.create()
t_exists.c.new_id.create()
しかし、これはしません:
t_exists.c.new_id.drop()
t_new.drop()
外部キー列を削除しようとすると、次のエラーが発生します: 1025、「'.\my_db_name\#sql-1b0_2e6' を '.\my_db_name\exists' に名前変更中にエラーが発生しました (errno: 150)」
生のSQLでこれを行うと、外部キーを手動で削除してから列を削除できますが、SQLAlchemyで外部キーを削除する方法がわかりませんか? 外部キーを削除してから列を削除するにはどうすればよいですか?