개발/Flask, Fastapi
Flask-sqlalchemy "One or more mappers failed to initialize" 오류
AimB
2021. 3. 23. 16:42

One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class User->user'. Original exception was: relationship 'tweets' expects a class or a mapper argument
라는 오류가 떴다. 읽어보니 매핑 관계에서 문제가 있었다.
해결책
1. 테이블 간의 관계 relationship을 꼼꼼하게 봐준다.
처음에
class Tweet(db.Model):
__tablename__ = 'tweet'
id = db.Column(db.Integer(), primary_key=True)
text = db.Column(db.Text())
embedding = db.Column(db.PickleType)
user_id = db.Column(db.Integer(),db.ForeignKey('user.id'))
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer(), primary_key=True)
username = db.Column(db.String(64), nullable=False) #unique=True,
full_name = db.Column(db.String(64), nullable=False)
followers = db.Column(db.Integer())
tweets = db.relationship("Tweet", back_populates="users")
back_populates로 relationship을 지정하니 오류가 난 거 같아서 back_ref로 바꿨는데, 저 오류가 떠서
다시 back_populates로 바꾸니 오류가 없어졌다.
2. 작업하던 폴더의 migrations 폴더 삭제

3. CLI에서
- FLASK_APP=flask_app flask db init
- FLASK_APP=flask_app flask db migrate
- FLASK_APP=flask_app flask db upgrade
로 업그레이드 적용해주기

Can't locate revision identified by - 에러가 뜨긴 했지만
매핑이 잘 적용되었다.
오류 코드가 없어졌다!