로컬 데이터베이스에 있는 테이블을 백업하고 AWS RDS에서 백업한 SQL 파일을 실행(업로드)하려고 하는데 다음과 같은 에러가 발생했음 😑
mysql> source celeb.sql ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: '?-'. Bye
대충 해당 SQL 파일에 아스키 문자(null 문자)가 포함되었는데 이건 MySQL에 허용되지 않는 문자니까, --binary-mode 옵션을 사용해 이진 모드로 설정한 후 백업하거나 non-interactive 모드로 실행하라는 소리같음
그래서 문제 해결 방법은,
해당 테이블(or 데이터베이스)을 백업할 때 아래와 같이 추가 옵션을 덧붙이면 됨
mysqldump -u 사용자명 -p 데이터베이스명 테이블명 --default-character-set=utf8mb4 > 이파일명(뭐라고백업하고싶은지).sql mysqldump --set-gtid-purged=OFF -h 엔드포인트 -P 포트 -u 사용자명 -p패스워드 데이터베이스명 테이블명 > 이파일명.sql # AWS RDS 데이터베이스 백업하는 경우
그리고 백업한 테이블(or 데이터베이스)을 복원하고 싶은 디렉토리에 이동하고 AWS RDS에 다음과 같이 접속 후,
mysql -h AWS_RDS_데이터베이스명.엔트포인트 -P 포트 -u 사용자명 -p패스워드 연결할데이터베이스명
MySQL이 실행되면 백업한 파일을 다음과 같이 복원시킬 수 있음
source 파일명.sql