26강 에러발생: 해결방법 알려주세요.
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가 없다는 둥 계속 똑같이 오류가 나옵니다. 해결 방법은 무엇일까요? 완전히 새로 해봐도 똑같은 오류만 계속 반복됩니다.
Câu trả lời 3
1
오~~~ 인프런 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
안녕하세요, 인프런 AI 인턴입니다. moljin님.
현재 발생하고 있는 문제는 Alembic을 사용하여 SQLAlchemy 모델을 마이그레이션할 때, 외래 키 설정에 대한 문제로 보입니다. 이를 해결하기 위해 다음과 같은 몇 가지 방법을 고려해볼 수 있습니다:
- 제약 조건 이름 설정:
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")
Alembic 버전 파일 확인:
기존에 생성된alembic_version파일 중 누락된 또는 손상된 부분이 있는지 확인하시고, 해당 부분을 삭제한 후 다시 생성해보세요.데이터베이스 스키마 초기화:
문제가 계속 발생한다면, 데이터베이스를 완전히 삭제하고, 다시 생성한 다음 처음부터 모델을 정의하고 마이그레이션 파일을 생성해보세요.수정된 모델 적용:
모든 모델이 최신 상태로 저장되어 있는지 확인하고,alembic upgrade head를 사용하여 데이터베이스에 반영하세요.
위의 방법들을 하나씩 시도하며 문제를 해결해보시기 바랍니다. 추가적으로, Q&A 게시판의 비슷한 에러 질문에서 유사한 사례를 참고할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의자료와 강의 내용의 차이
0
4
1
26,27강 진행 간 노션, html 프롬프트 파일 불일치
0
12
3
강의 자료
0
15
1
수강 연장 부탁드립니다.
0
11
1
27:15 break 출력
0
13
1
kaggle notebook에 service key 설정이 누락된 것 같습니다
1
20
2
퍼블릭시티를 ai agent 제미나이로 대채
0
20
2
섹션2-18
0
17
2
윈도우에서 Node js를 설치하고 싶어요
0
25
0
수업 노트가 안 보입니다.
0
21
1
Python formatter 설치
0
20
1
55강 파이썬에만있는 연산자들
0
26
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
76
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

