원인
mysql 4.0.27 euckr 버전에서 sql 파일로 dump 진행한 xxx.sql 파일이 있다. 동일 버전대의 mysql 에 데이터 이전을 하는것이 아니라, 상위버전대의 데이터 이전을 진행할 경우 아래와 같은 문제가 발생한다.
이러한 상황에서 어떻게 대처해야될까?
문제 해결
올바른 문법을 입력하지 못해 발생된 에러라고 한다. 난 정상적으로 mysqldump 명령어를 입력해서 sql 파일을 만들고, 다시 정확하게 넣었는데 도대체 무엇이 문제인 것인가.
원인은 mysql 버전에 따른 문법 표기법 문제 때문이다. mysql 4.0.27 버전에서 상위버전인 5.5.x버전으로 데이터 이전을 하게되면, 4.0.27 버전에서 사용되던 여러가지 sql 문법이라든지 옵션들이 호환 안되는 부분이 많이 발생한다.
위의 에러코드를 자세히 살펴보게 되면 TYPE=MyISAM 부분이 수상하다. 이부분에서 무엇인가 문제가 있다는 것이다.
mysql 4.0.x 이전버전에서는 mysql engines 표시를 TYPE 으로 표시를 하였지만, 4.1.x 버전 부터는 ENGINE=MyISAM 으로 변경되었다.
이 때문에 sql 파일을 적용시킬려 해도 반복적인 에러만 발생되었던 것이다.
vi xxx.sql
TYPE=MyISAM 을 검색해서 전부 ENGINE=MyISAM 으로 변경을 해주도록 한다.
추가내용
mysqldump 파일인 sql 파일을 euckr -> utf8 로 변경하는 방법을 간단히 정리하고 넘어가도록한
다.
처음부터 dump 을 할 경우에 옵션으로
mysqldump -uroot -p –default-character-set=utf8 –all-databases > all_utf8.sql
이런식으로 해주면 되겠지만, 내가 직접 작업한 것이 아니라 고객사에서 받은 파일일 경우 또다시
utf8 파일로 변환해주라고 요청을 해야되는 번거로움이 존재한다.
이런번거로움 없이 바로 적용하는 방법은 아래와 같다.
첫번째. iconv -c -f euckr test.sql > test_utf8.sql
두번째. iconv -c -f euckr -t utf8 test.sql > test_utf8.sql
어떤방법을 사용하든 동일하다.