【问题标题】:MYSQL: remove everything related to corrupted databaseMYSQL:删除与损坏的数据库相关的所有内容
【发布时间】:2013-12-27 12:03:19
【问题描述】:

我的开发环境中有一个损坏的数据库,我无法再访问 - 可能是由于系统崩溃。由于我无法 DROP 数据库(我不记得为什么 - 现在不再重要了)我刚刚删除了 mysql/data 中的数据库文件夹。

这显然不是一个好主意。创建同名的新数据库后,在数据库的某处仍有一些表空间定义。当我尝试创建新表时,出现以下错误:

表“database_name.table_name”的表空间存在。请在 IMPORT 之前丢弃表空间。

有没有一种不错的方法来摆脱给定数据库的所有引用/索引/表空间信息?当我尝试 DROP 新创建的同名数据库时,我得到: “错误 2013 (HY000): 查询期间丢失与 MySQL 服务器的连接”。

【问题讨论】:

标签: mysql innodb


【解决方案1】:

当你遇到这样的情况时,最好的办法是:

  1. 备份您的数据库
  2. 删除整个数据库
  3. 从备份中恢复您的数据库

【讨论】:

  • 我确实删除了数据库,但仍然有表空间条目。最后我重新安装了整个 mysql 服务器来修复它……不过这真是浪费时间。
  • 是的,发生了。你不应该通过文件系统弄乱 MySQL 文件......我也从艰难的过程中吸取了教训:)
【解决方案2】:

为每个表运行以下两个查询:

    ALTER TABLE tablename DISCARD TABLESPACE;
    ALTER TABLE tablename IMPORT TABLESPACE;

如果表太多,只需编写一个脚本,使用 SHOW TABLES 循环遍历它们,然后使用上面的两个查询。

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 2021-10-06
    • 2011-03-22
    • 2014-03-17
    • 1970-01-01
    • 2014-04-13
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多