inflearn logo
강의

Course

Instructor

FastAPI: Build APIs 3x Faster, 2x More Accurate, and 10x Faster with Python

26강 에러발생: 해결방법 알려주세요.

Resolved

158

moljin

14 asked

0

26강에서 User model를 만들고, Task model의 관계 설정까지 하고 env.py에서 User를 임포트하고 난후 alembic revision --autogenerate를 실행하고, alembic upgrade head 를 실행하면 User 테이블과 Task 모델의 관계설정은 잘 만들어 졌지만,

 

아래에 보이는 것처럼, 제약조건에 name을 지정하라고 나옴니다.

그래서 name을 지정하고 db를 삭제하고, alembic을 초기화된 상태로 만든 후에 다시 똑같은 과정을 거쳐 실행햇는데, 두번째 alembic revision --autogenerate 을 실행하면, sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'users.id' on table 'tasks': table 'users' has no column named 'id' 이런 오류가 나타납니다.

 

자꾸 자꾸 계속해서 다시 해봐도 제약조건에 이름을 넣으라고 나오고, 그것을 수정하면 users에 id가 없다는 둥 계속 똑같이 오류가 나옵니다. 해결 방법은 무엇일까요? 완전히 새로 해봐도 똑같은 오류만 계속 반복됩니다.

 

image.png

python aws docker sqlalchemy FastAPI

Answer 3

1

moljin

오~~~ 인프런 AI 인턴님!

대단하십니다. name을 외래키 밖에 적었었네요... 외래키 안에 넣엇더니 잘 되는군요... 감사합니다. 아래의 차이가 그런 걸 만들었었네요~~^^

owner_id = Column(Integer, ForeignKey('users.id'), name='fk_user_task', nullable=False)

이처럼 하면 안되고... 아래 처럼 외래키 안에 이름을 넣어야 하는 군요..

owner_id = Column(Integer, ForeignKey('users.id', name='fk_user_task'), nullable=False)

0

haeyeomiso

안녕하세요 강사해여입니다!

인프런 AI인턴님이 대답해주셔서 다행이네요!

열정적인 강의 수강 감사드립니다!
👍

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. moljin님.

현재 발생하고 있는 문제는 Alembic을 사용하여 SQLAlchemy 모델을 마이그레이션할 때, 외래 키 설정에 대한 문제로 보입니다. 이를 해결하기 위해 다음과 같은 몇 가지 방법을 고려해볼 수 있습니다:

  1. 제약 조건 이름 설정:
    SQLAlchemy 모델에서 외래 키 제약 조건에 이름을 지정해 줄 필요가 있습니다. 이는 ForeignKey 객체를 사용할 때, 다음과 같이 name 속성을 명시하여 해결할 수 있습니다.
   from sqlalchemy import Column, Integer, String, ForeignKey
   from sqlalchemy.orm import relationship
   
   class Task(Base):
       __tablename__ = 'tasks'
       id = Column(Integer, primary_key=True, index=True)
       owner_id = Column(Integer, ForeignKey('users.id', name='fk_user_task'), nullable=False)
       owner = relationship("User", back_populates="tasks")

   class User(Base):
       __tablename__ = 'users'
       id = Column(Integer, primary_key=True, index=True)
       tasks = relationship("Task", back_populates="owner")
  1. Alembic 버전 파일 확인:
    기존에 생성된 alembic_version 파일 중 누락된 또는 손상된 부분이 있는지 확인하시고, 해당 부분을 삭제한 후 다시 생성해보세요.

  2. 데이터베이스 스키마 초기화:
    문제가 계속 발생한다면, 데이터베이스를 완전히 삭제하고, 다시 생성한 다음 처음부터 모델을 정의하고 마이그레이션 파일을 생성해보세요.

  3. 수정된 모델 적용:
    모든 모델이 최신 상태로 저장되어 있는지 확인하고, alembic upgrade head를 사용하여 데이터베이스에 반영하세요.

위의 방법들을 하나씩 시도하며 문제를 해결해보시기 바랍니다. 추가적으로, Q&A 게시판의 비슷한 에러 질문에서 유사한 사례를 참고할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의자료와 강의 내용의 차이

0

6

1

26,27강 진행 간 노션, html 프롬프트 파일 불일치

0

12

3

강의 자료

0

15

1

수강 연장 부탁드립니다.

0

11

1

27:15 break 출력

0

13

1

kaggle notebook에 service key 설정이 누락된 것 같습니다

1

21

2

퍼블릭시티를 ai agent 제미나이로 대채

0

21

2

섹션2-18

0

18

2

윈도우에서 Node js를 설치하고 싶어요

0

27

0

수업 노트가 안 보입니다.

0

21

1

Python formatter 설치

0

21

1

55강 파이썬에만있는 연산자들

0

30

2

github 소스코드

0

109

2

강의자료 링크로 들어가면 페이지를 찾지못한다고 나와요

1

108

2

CRUD관련: async def get_db() 관련

0

143

2

34강 강의 마지막에 나오는 35강 websocket 관련 강의 관련 질문

1

103

1

Docker와 AWS 배포 강의 관련

0

97

2

15강 수정 요청: DOWNLOAD_DIR 확인 구문 부분

0

77

2

31강 질문: /docs에 read_all_users 관련

1

106

3

30강 질문: 토큰생성 관련

1

120

2

25강에서 에러발생: 해결방법 알려주세요

0

181

3

13강 DeleteUserCookie 함수

1

109

4

안녕하세요 강의자료 문의입니다.

1

130

2

FASTAPI 소개와 핵심 특징 강의 내용에서 화면이 멈춰있습니다.

1

162

2