背景

启动mysql8.0的时候提示表空间重复,具体报错如下:

mysql_8.0.25 | 2022-03-16T07:13:02.602420Z 1 [ERROR] [MY-012209] [InnoDB] Multiple files found for the same tablespace ID:
mysql_8.0.25 | 2022-03-16T07:13:02.602523Z 1 [ERROR] [MY-012202] [InnoDB] Tablespace ID: 21 = ['apaas_business/act_ru_event_subscr.ibd', 'sys/sys_config.ibd'] 

解决方法

先把报错的表空间所在的ibd文件移走,再启动,然后再移入,再重启导入表空间,具体如下:

1. mv data/mysql/apaas_business/act_ru_event_subscr.ibd /tmp/
2. 启动mysql
3. mysql>use apaas_business;
   mysql>alter table apaas_business.act_ru_event_subscr discard tablespace;
4. mv /tmp/act_ru_event_subscr.ibd data/mysql/apaas_business/
5. mysql>alter table apaas_business.act_ru_event_subscr import tablespace;

思考

可以使用以下命令将表空间对应的ID查出来,然后修改ID,由于我已经重新导入了,查出来的sys/sys_config ID为空,就不试了

SELECT TABLESPACE_NAME,FILE_ID,FILE_NAME FROM INFORMATION_SCHEMA.FILES;

image.png