我有一些孤儿表,我无法删除在谷歌管理的MySQL实例。
https://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html描述了如何使用查询:SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';找到它们。
并返回以下结果
TABLE_ID, NAME, FLAG, N_COLS, SPACE, FILE_FORMAT, ROW_FORMAT, ZIP_PAGE_SIZE, SPACE_TYPE
'10790334', 's/#sql-ib10651620-992396264', '33', '10', '15069', 'Barracuda', 'Dynamic', '0', 'Single'
'11386494', 's/#sql-ib11176578-758128583', '33', '10', '15865', 'Barracuda', 'Dynamic', '0', 'Single'
'11715795', 's/#sql-ib11550885-968245244', '33', '56', '16593', 'Barracuda', 'Dynamic', '0', 'Single'
'11884112', 's/#sql-ib11854996-1155811138', '33', '63', '16936', 'Barracuda', 'Dynamic', '0', 'Single'
'12648506', 's/#sql-ib11883996-1143057998', '33', '31', '18549', 'Barracuda', 'Dynamic', '0', 'Single'
'12877658', 's/#sql-ib11884055-1196159549', '33', '34', '19856', 'Barracuda', 'Dynamic', '0', 'Single'
'15159365', 's/#sql-ib15000139-4079941189', '33', '58', '24560', 'Barracuda', 'Dynamic', '0', 'Single'我无法选择这些表中的任何一个,例如:
use s; SELECT * FROM `#mysql50##sql-ib10651620-992396264` limit 10;
在https://mariadb.com/resources/blog/get-rid-of-orphaned-innodb-temporary-tables-the-right-way/之后,我尝试创建一个同名的表。
在查询的帮助下,我找出了这些孤儿来自哪些表。
从information_schema.innodb_sys_tables.NAME喜欢“%#sql%”的地方选择*从information_schema.innodb_sys_tables联接information_schema.innodb_sys_columns使用(TABLE_ID)
然后,我复制了相关表的create语句并编辑了表名。
CREATE TABLE `s`.`#sql-ib10651620-992396264` ( `ID` int(11) NOT NULL AUTO_INCREMENT, ...) ENGINE=InnoDB DEFAULT CHARSET=utf8;然后试着放弃
drop table `s`.`#mysql50##sql-ib10651620-992396264`;但它找不到桌子。在删除创建的表之后,
drop table `#sql-ib10651620-992396264`;孤儿之桌依然存在。
据我所知,使用托管MySQL实例,我无法访问运行MySQL的机器,因此无法从命令行删除相关文件。从命令行登录到数据库并执行shell命令,在客户端的主机系统上执行命令,而不是在承载MySQL的系统上执行命令。
这不是一个大问题,但这将是一个很好的回收磁盘空间。
https://dba.stackexchange.com/questions/245107
复制相似问题