现象
第一次执行ddl操作时由于oom导致中断,再次执行这个ddl报错
ALTER TABLE `Db_Order4` ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;
ERROR 1050 (42S01): Table 'mabang_order/#sql-ib9302' already exists
处理方法
1 create table tmp like table_name;
2 alter table tmp ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;
3 cp tmp.frm "#sql-ib9302.frm"
4 改权限为mysql chown mysql:mysql "#sql-ib8665.frm"
5 drop table `#mysql50##sql-ib9302`
6 检查下主从状态,跳过错误
7 再次执行ALTER TABLE `Db_Order4` ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;
故障原因
应该是ddl时由于db宕机等非正常关闭导致无法全部回滚,残留了一些临时文件,具体是个什么流程未知