저는 Postgres에서 데이터베이스와 스키마를 만들었습니다. 나는 내 모델을 가지고 Flask-Migrate를 사용하는 python manager.py db migrate
을 실행할 때 아래 오류가 발생합니다. 그러나 db init
명령이 작동합니다. 내 모델 __tablename__
및 __table_args__ = {"schema": "name_of_schema"}
를 추가 할 때PostgreSQL 스키마와 잘못된 일대 다 관계로 인한 일괄 이전 문제
sqlalchemy.exc.ProgrammingError: (ProgrammingError) no schema has been selected to create in
지금, 나는 오류 모두 아래 얻을, db init
및 db migrate
:
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'deploy.instance_id' could not find table 'instance' with which to generate a foreign key to target column 'id'
나의 관계는 그러나, 괜찮아 보여. 많은 예제를 보았지만 Flask-Migrate가 없어도 SQLite에서 제대로 작동했습니다.
class Application(db.Model):
__tablename__ = 'application'
__table_args__ = {"schema":"v1"}
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=False)
instances = db.relationship('Instance', backref='application', lazy='dynamic')
def __repr__(self):
return '<ID %r>' % (self.id)
class Instance(db.Model):
__tablename__ = 'instance'
__table_args__ = {"schema":"v1"}
id = db.Column(db.Integer, primary_key=True)
host = db.Column(db.String(80), unique=False)
application_id = db.Column(db.Integer, db.ForeignKey('application.id'))
deploys = db.relationship('Deploy', backref='instance', lazy='dynamic')
def __repr__(self):
return '<ID %r>' % (self.id)
class Deploy(db.Model):
__tablename__ = 'deploy'
__table_args__ = {"schema":"v1"}
id = db.Column(db.Integer, primary_key=True)
tag = db.Column(db.String(80), unique=False)
instance_id = db.Column(db.Integer, db.ForeignKey('instance.id'))
def __repr__(self):
return '<ID %r>' % (self.id)
관계는 다음과 같습니다 : (대부분의 열을 제거)는 다음과 같이
나는 세 개의 테이블이
- 응용 프로그램 인스턴스에 (일대 다, 하나의 응용 프로그램 많은 경우) (하나 개의 인스턴스가 여러 전개함에 일대)
I를
sqlalchemy.exc.ProgrammingError: (ProgrammingError) no schema has been selected to create in
. 문제점은 무엇이며 어떻게 해결할 수 있습니까?
ForeignKey. 고맙습니다! – darksky