【问题标题】:Table `in use` on a mySQL server in phpmyadminphpmyadmin 中 mySQL 服务器上的表“使用中”
【发布时间】:2019-08-28 10:00:01
【问题描述】:

我目前正在开发一个网站,并且已经发生了几次错误。我知道已经有人问过这个问题,但还没有回答。
问题如下:数据库中的表变得不可用并且可能已损坏。

当我查看 phpmyadmin 时,表格显示为in use,我无法打开它也无法读取它的数据(如果它仍然存在的话)。

截图:https://imgur.com/a/LSTygFX

这个错误很可能是由于与表格的某些交互造成的,但这些交互不太可能以前没有发生过。

到目前为止,我已经做了一些研究,只找到了一个有解决方案的人。 我不知道它是否有效,但他发现他的表变为in use 是由于存储引擎是“InnoDB”(对我来说也是),所以我将它切换到 MyISAM。

【问题讨论】:

  • 检查 PHPMyAdmin 源代码以了解 "in use" 消息的出现方式和原因..
  • @RaymondNijland 你说的源代码是什么意思?如果您指的是日志,很遗憾我无法查看它们,因为我无权启用这些(很快就会改变)
  • “源代码是什么意思?” 我的意思是阅读 PHP/HTML/Javascript 代码 PHPMyAdmin 是如何构建的?

标签: mysql sql database phpmyadmin


【解决方案1】:

您永远不应该将您的 Innodb 存储引擎更改为 MyISAM,因为 Innodb 在性能和锁定方面比 MyISAM 具有更多优势。

除了好处之外,如果你从 Innodb 转换到 MyISAM 会导致很多问题并且数据库大小也会变大。所以你必须使用你以前基于 InnoDB 存储引擎的数据库备份,对于这个问题在 PHPMyAdmin 中,选择所需的数据库,在底部,有一个“With Selected”的下拉选项,从这里选择“Repair Table” .大多数时候它解决了这个问题

【讨论】:

  • 感谢您的回复,我更改了它,因为我完全不知道此错误及其来源。这是一个月内第四次发生这种情况,我查看了我的代码,看看它是否会损坏它。我更改为 MyISAM 的原因是因为它为某人修复了它,还因为大部分数据库都在 MyISAM 下(在我到达之前完成)。关于“修复表”,我已经尝试了好几次,但显然我不能,因为这个in use 表会在此过程中产生错误。
  • @tacosanxiety 除了性能和锁定之外,我也很确定 MyISAM 正在被淘汰,因为 MySQL 从 MySQL 8.0.16+ 开始不再允许在 internal_tmp_disk_storage_engine 设置中使用 MyISAM。请注意消息“在 MySQL 8.0.16 及更高版本中,磁盘内部临时表始终使用 InnoDB 存储引擎;从 MySQL 8.0.16 开始,此变量已被删除,因此不再受支持。” i> 这让我相信 MyISAM 即将被弃用
  • @tacosanxiety "In use" 问题通常是由于大数据或磁盘空间问题,如果您将数据库转换为 MyISAM,那么您的数据库大小已经增加,这意味着比以前的数据库更大.您必须首先优化您的数据库。否则修复技巧将不起作用。我的建议是使用您之前的 Innodb 数据库备份,使用“ALTER TABLE table_name ENGINE = 'InnoDB'”对其进行优化,然后进行修复。
  • 当你在正确的方法上应用技术时,解决方案是可能的,否则你将来会陷入其他问题。
  • 您也可以优化您当前的数据库,但是如果您确定该数据库处于完整的工作状态并且没有丢失任何索引,因为在转换过程中数据库中会发生许多问题并且无法进行优化这种类型的数据库。
猜你喜欢
  • 2016-06-21
  • 1970-01-01
  • 2020-06-04
  • 2019-05-05
  • 2020-12-05
  • 2010-10-01
  • 2015-03-27
  • 1970-01-01
  • 2017-11-15
相关资源
最近更新 更多