티스토리 뷰

반응형

카페24에서 사용하던 웹호스팅 서버를 부득이하게 가비아로 옮길때 발생하는 테이블 이동 오류인데,

원인이 뭔가 한참을 찾다가 찾은 것 같아서

기록을 남겨본다.

기존 phpMyAdmin에서 DBeaver로 그대로 옮겨서 사용할 경우 가져오기를 통해 CSV형태로 자료를 가져올 수 있는데,

허걱.. 이런 오류가 발생했다.

Error occurred during Create target metadata 이유: SQL Error [1118] [42000]: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

 




MySQL은 하나의  테이블에 최대 4,096 개의 컬럼을 가질 수 있으며 row 사이즈는 65,535 bytes 로 제한되어 있습니다. 

위의 내용이 매우 중요하다.

큰 varchar 필드가 많은 테이블의 경우 row 사이즈 제한 때문에 다음과 같은 SQL은 에러가 나고 실행이 안된다.

65535 초과 테이블 생성

Dbeaver 에러 메시지


ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

해결 방법은 위 에러 메시지에도 나온 것처럼 varchar 컬럼 대신 BLOB 나 TEXT 필드로 수정.

 BLOB, TEXT 필드는 테이블과 분리되어 저장되므로 65,535 bytes 의 제한에 걸리지 않습니다.

이걸 알고 실행한 결과는 ?

varchar 형태를 전부 'text'로 변경함

생각해 보니, DB 컬럼을 설계할때 'varchar'를 사용하지 않는게 좋을 것 같다. 왠만하면 text로 설정해서 사용해야지...라는

다짐을 해보게 만드는 부분이다.

 

 

반응형
댓글