私はPythonでアプリケーションを構築しています。私はsqlalchemy-migrateを使用してデータベーススキーマを追跡しています。私は、IDと名前の2つの列を持つテーブルuser_categoryを持っています。 user_categoryテーブルへの外部キーを持つuserテーブルを作成しようとしています。次のようにユーザーのテーブルを作成するための私の変更スクリプトは次のとおりです。SQLAlchemy-Migrateを使用した外部キー制約のテーブル作成エラー
from sqlalchemy import *
from migrate import *
from migrate.changeset import *
meta = MetaData()
user_category = Table('user_category', meta)
user = Table('user', meta,
Column('id', Integer, primary_key=True),
Column('email', String(255)),
Column('first_name', String(40)),
Column('surname', String(40)),
Column('password', String(255)),
Column('user_category', Integer, ForeignKey("user_category.id")),
)
def upgrade(migrate_engine):
# Upgrade operations go here. Don't create your own engine; bind migrate_engine
# to your metadata
meta.bind = migrate_engine
user.create()
def downgrade(migrate_engine):
# Operations to reverse the above upgrade go here.
meta.bind = migrate_engine
user.drop()
私は「manage.pyテスト」を実行すると、私が取得し、エラー:
sqlalchemy.exc.NoReferencedColumnError: Could not create ForeignKey 'user_catego
ry.id' on table 'user': table 'user_category' has no column named 'id'
これは簡単です。 user_categoryテーブルが以前の変更スクリプトで定義されているため、ユーザー変更スクリプトで再定義する必要はありませんでした。私は間違っていた。おかげでiElectric – hellsgate