从 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
。
归档时间: |
|
查看次数: |
2313 次 |
最近记录: |