[Flask-SQLAlchemy]sqlalchemy.exc.InvalidRequestError: Table ‘xxx’ is already defined for this MetaData instance. というエラーが出た時
はじめに
SQLAlchemyとFlask-SQLAlchemyで開発していて、ページ表示時に以下のようなエラーが出たので、解決策をメモしておきます。
エラー内容
sqlalchemy.exc.InvalidRequestError: Table 'xxx' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object.
xxxというテーブルがメタデータインスタンスにすでに定義されているよ、というエラーのようです。
すでに存在しているテーブルオブジェクトのオプションやカラムを再定義する場合は、extend_existing=True
を設定せよと書いてあります。
対応
モデルを定義しているコードに以下の一文を追記しました。
class XXX(db.Model):
__tablename__ = 'xxx'
__table_args__ = {'extend_existing': True} # 追記
これで動くようになりました。
ディスカッション
コメント一覧
まだ、コメントがありません