1. 내용
1.1 환경
- CentOS 7.4
- MariaDB Version : 10.1.12, 10.3.8
1.2 내용
1) 10.1.12 MariaDB 데이터 파일(ibd)을 10.3.8 MariaDB로 데이터 임포트 실패
- MariaDB [(none)]> ALTER TABLE test.mig_tb IMPORT TABLESPACE ;
ERROR 1808 (HY000): Schema mismatch (Expected FSP_SPACE_FLAGS=0x21, .ibd file contains 0x0.)
2. 원인 분석
2.1 테이블 행 포맷 변경
- 10.1.12에서 테이블의 ROW_FORMAT은 COMPACT였으나, 10.3.8에서는 DYNAMIC으로 변경 됨에 따라 테이블 행의 포맷이 상이하여 에러 발생
2.2 신규 파라미터
- innodb_default_row_format = 'dynamic'
MariaDB [(none)]> SHOW VARIABLES LIKE '%innodb_default_row_format%';
+---------------------------+---------+
| Variable_name | Value |
+---------------------------+---------+
| innodb_default_row_format | dynamic |
+---------------------------+---------+
1 row in set (0.000 sec)
3. 해결
- 10.3.8 MariaDB 테이블 행 포맷을 Compact로 변경
SET GLOBAL innodb_default_row_format = 'COMPACT';
- 테이블 생성 후 데이터 임포트
MariaDB [(none)]> ALTER TABLE test.img_tb IMPORT TABLESPACE ;
Query OK, 0 rows affected, 1 warning (0.160 sec)
- 테이블 행 포맷 재변경
SET GLOBAL innodb_default_row_format = 'DYNAMIC';