본문 바로가기
파이썬/팁

Python to_sql 에러 sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1170, "BLOB/TEXT column 'index' used in key specification without a key length")

by 행복론자 2020. 6. 12.

pandas data를 to_sql를 이용해 DB에 insert시킬 때 다음과 같은 코드를 사용한다고 하면 

df.to_sql(name=table_name, con=connector, if_exists='replace')

 

 

다음과 같은 에러가 발생했다.

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1170, "BLOB/TEXT column 'index' used in key specification without a key length")

 

 

index 없으면 자동으로 만들어줄텐데 이미 data에 index 정의 없이 index를 사용하고 있는 상태라서 발생하는 문제.

 

해결 방법1.

to_sql에서 default option으로 들어가는 index=True를 바꿔준다.

df.to_sql(name=table_name, con=connector, index=False, if_exists='replace')

 

 

해결 방법2.

해당 table을 사용하기 전에 index 뭐쓸지 미리 정의해서 만든다.

 

 

해결 방법3.

기존 index를 다른 column으로 옮겨놓는다.

df['new_column'] = price_df.index
df = price_df.reset_index(drop=True)
df.to_sql(name=table_name, con=connector, if_exists='replace')

 

검색해도 별 내용이 안나와서 정리해본

1170, "BLOB/TEXT column 'index' used in key specification without a key length"  에러 

다른 방법이 있다면 댓글로 알려주세요~

 

** 제 블로그에 와주셔서 감사합니다.
재밌게 보셨다면 좋아요, 댓글은 저에게 큰 힘이 됩니다! 
감사합니다!

 

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글