MySQL을 MariaDB로 이전하는 문제가 발생하여 MySQL 데이터를 dump파일로 생성했습니다.
무려 15G의 대용량 파일이 생성되었네요. 이건 vi 에디터로 열어도 시간이 오래 걸리는 괴물입니다.
mariadb -u root database_name < dump.sql
그런데, 해당 작업을 수행하다보니 제목처럼 enum('Y','N') 컬럼을 사용하는 테이블의 row값에 공백문자가 발견되어서 작업이 멈춰버리는 오류가 발생했습니다.
(MySQL의 기본 STRICT_TRANS_TABLES SQL 모드는 데이터 입력 시 제약 조건 위반에 대한 엄격한 처리를 활성화)
당연히 데이터를 밀어넣는데 오류가 발생하겠죠? dump 받는 시간도 3시간이나 걸려서 받은 데이터입니다.
그렇다고 dump파일을 수정하는 것도 무리입니다.
이런 경우는 쉽게 처리가 가능한데 STRICT_TRANS_TABLES 모드를 꺼주면 됩니다.
mariadb -u root database_name \
--init-command="SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'STRICT_TRANS_TABLES',''))" \
< dump.sql
SET SESSION 명령어를 통해서 sql_mode를 dump를 밀어넣는 작업을 수행하는 동안만 변경해주면 됩니다.
우리 개발자들은 쓸데없는 작업이 시간을 허비하는 것을 정말 싫어하잖아요?
반응형
'꼰대개발자 > 데이터베이스' 카테고리의 다른 글
| AWS RDS For MySQL8.4 with PHP5.2 (0) | 2026.01.23 |
|---|