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" 에러
다른 방법이 있다면 댓글로 알려주세요~
** 제 블로그에 와주셔서 감사합니다.
재밌게 보셨다면 좋아요, 댓글은 저에게 큰 힘이 됩니다!
감사합니다!
반응형
댓글