💻 프로그래밍/DB

[MySQL] Unknown table 'COLUMN_STATISTICS' in information_schema (1109) 에러

피트웨어 제이 (FitwareJay) 2020. 7. 12. 23:22

안녕하세요! 운동하는 개발자 제이입니다. 

오늘은 mysqldump 할 때, 생기는 에러에 대해서 알아보려고 해요! 

 

최근에 DB 덤프를 해야 하는 일이 있었는데, 갑자기 오류가 나더니 안되는 거예요?!

(사실 mysql관련 brew 업데이트를 어떤 작업 중에 하게 됐어요ㅠㅠ)

mysqldump -u[user] -p  -h[호스트] [데이터베이스] [테이블명] > [저장할 이름].sql

이렇게 mysqldump 명령어를 실행하니까,

 

mysqldump: Couldn’t execute ‘SELECT COLUMN_NAME,                       JSON_EXTRACT(HISTOGRAM, ‘$.“number-of-buckets-specified”’)                FROM information_schema.COLUMN_STATISTICS                WHERE SCHEMA_NAME = ‘DB 이름’ AND TABLE_NAME = ‘테이블 이름‘;’: Unknown table ‘COLUMN_STATISTICS’ in information_schema (1109)

일단 COLUMN_STATISTICS라는 테이블을 알 수 없다는데, 여기에 힌트가 있을 것 같아 구글링 해봤습니다.

 

MySQL 8.0 레퍼런스 문서 Performance Options

MySQL 공식 문서를 찾아보니, 8.0부터 새로 추가된 옵션 때문에 나는 에러이더라고요. 해당 옵션이 활성화되어있으면 덤프 할 때 ANALYZE TABLE에 히스토리를 생성(?) 하는 것 같아요.

근데, 옵션은 1(on)로 되어있는 데 사용해야 할 테이블이 없어서 나는 오류입니다. 해결하는 방법은 두 가지가 있는데,

 

📌 column-statistics=0으로 주고 mysqldump 실행

mysqldump --column-statistics=0 -u[user] -p  -h[호스트] [데이터베이스] [테이블명] > [저장할 이름].sql

 

📌 config 파일에 default값 세팅

[mysqldump]
column-statistics=0

/etc/my.cnf 또는 ~ / .my.cnf 같은 파일에 위 설정을 추가하는 것입니다.

 

저는 두 번째 방법으로 하려다가, 잘 안돼서 첫 번째 방법으로 하니까 잘 dump 되었습니다.

자세한 내용은 column statistics 관련 문서에서 확인해보세요~😄

그럼 오늘 하루도 즐거운 코딩 하시길 바래요!!🧑‍💻