无法删除孤立临时表

Gre*_*osz 6 mysql mariadb

从 MariaDB 5.5 迁移到 10.0 后,我注意到一条错误消息提到了名为piwik/#sql-1526_3a.

从那里我开始谷歌搜索并找到了innodb 故障排除文档

确实,SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';给出了以下结果:

MariaDB [(none)]> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';
+----------+--------+----------------+------+--------+-------+
| TABLE_ID | SCHEMA | NAME           | FLAG | N_COLS | SPACE |
+----------+--------+----------------+------+--------+-------+
|      323 | piwik  | #sql-1526_3a   |    1 |     11 |   320 |
|      265 | piwik  | #sql-5305_92b0 |    1 |     24 |   262 |
|      321 | piwik  | #sql-7920_48   |    1 |     24 |   318 |
+----------+--------+----------------+------+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我尝试按照 MySQL 故障排除说明进行操作,结果是:

MariaDB [(none)]> use piwik
Database changed
MariaDB [piwik]> drop table `#mysql50##sql-1526_3a`;
ERROR 1051 (42S02): Unknown table '#mysql50##sql-1526_3a'
Run Code Online (Sandbox Code Playgroud)

从那里,我阅读了更多博客文章和堆栈交换答案,并注意到我的文件夹中没有#sql-1526_3a.idb#sql-1526_3a.frm文件/var/lib/mysql/piwik/

然后我尝试了以下操作:

$ cd /var/lib/mysql/piwik
$ cp piwik_user.ibd #sql-1526_3a.ibd
$ cp piwik_user.frm #sql-1526_3a.frm
Run Code Online (Sandbox Code Playgroud)

并重新启动 MariaDB。

然后我再次尝试删除该表:

MariaDB [piwik]> drop table `#mysql50##sql-1526_3a`;
Database changed
Query OK, 0 rows affected (0.00sec)
Run Code Online (Sandbox Code Playgroud)

霍雷?!!嗯,SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';还是列表吧#sql-1526_3a。在磁盘上,.frm文件已被删除,但.ibd文件仍然存在。

所以?有人知道我如何真正删除这些孤儿表吗?


编辑

在我看来,这些尾随临时表是在/var/lib/mysql/ibdata1我缩小并启用之前“引用”的innodb_file_per_table = 1

小智 0

这可能有用——无论如何我发现它很有趣: 如何以正确的方式删除临时表