Xampp-mysql - “引擎中不存在表” #1932

Xampp-mysql - "Table doesn't exist in engine" #1932

提问人:Yagya Bashyal 提问时间:8/4/2016 最后编辑:ShadowYagya Bashyal 更新时间:10/31/2023 访问量:361126

问:

移动 xampp 文件夹后出现 Xampp 错误:

enter image description here

Apache运行良好:

enter image description here

如下图所示,我成功运行Apache,但无法运行MySQL,如果我移动并运行Apache和MySQL的xampp,但它显示的错误是新鲜的,它显示错误,如“引擎中不存在表”#1932作为放弃的图像。请解决任何问题,请任何人帮助

MySQL 窗口

评论

0赞 Thush-Fdo 8/4/2016
检查你对这篇文章和这篇文章是否有任何运气

答:

0赞 lsfiege 12/28/2016 #1
  • 将文件夹的内容复制到文件夹中。这对我有用。backupsdata
  • 在此之后,您必须重新配置现有数据库的 innodb 文件

评论

8赞 Nagama Inamdar 12/28/2016
欢迎来到 Stackoverflow。你是否介意为其他程序员扩展一下你的答案,以了解它如何帮助解决问题。
2赞 Vipul Hadiya 9/11/2019
你能解释一下你的第二点吗?因为第一点对我有用,现在我丢失了所有数据。我可以看到表的列表,但是当我单击任何表时,说引擎中不存在表。
0赞 Raju Ahmed 9/15/2020
@VipulHadiya找到任何解决方案了吗?我目前遇到了和你一样的问题。
0赞 Vipul Hadiya 9/16/2020
@RajuAhmed 不,幸运的是,我备份了每个数据库,所以我将它们全部删除并一一导入所有 SQL。
0赞 FeralReason 6/25/2022
@VipulHadiya 是的 - 这也是我发现的最好的解决方案,但非常耗时。在过去的几年里,我经历了大约 3 次。我正在寻找有关首先如何删除表以及是否可以采取维护步骤来防止这种情况的解释。
59赞 Rohan Patil 6/28/2017 #2

我遇到了同样的问题,并使用以下步骤进行了排序。

  1. 转到MySQL配置文件(我的文件在C:\xampp\mysql\bin\my.ini)
  2. 检查线路innodb_data_file_path = ibdata1:10M:autoextend
  3. 接下来检查文件是否存在ibdata1C:/xampp/mysql/data/
  4. 如果文件不存在,请从以下位置复制文件ibdata1C:\xampp\mysql\backup\ibdata1

希望它对某人有所帮助。

评论

11赞 mike_freegan 8/5/2019
复制 ibdata1 为我解决了这个问题,但现在我在 phpmyadmin 中遇到了其他错误。“表'phpmyadmin.pma__tracking'在引擎中不存在”。
1赞 Rakesh Sharma 3/25/2020
这让我使用 xampp 的 phpmyadmin 崩溃了。当我启动MySQL时,它不会启动
0赞 Heemanshu Bhalla 9/21/2022
文件存在于我的情况下,但 phpmyadmin 和 php 站点中也存在错误
1赞 Yağmur Kopar 1/8/2023
我经常看到这个问题。复制备份文件夹并重命名为数据,替换旧的 ibdata1 后 100% 修复了我的 mysql 问题
78赞 Nava Bogatee 2/7/2018 #3

ib_logfileXXibdata 文件从旧的 mysql/data 文件夹复制到新的 mysql 数据文件夹,它将解决此问题

评论

1赞 Zuhair Taha 4/15/2018
这对我有用。我安装了新版本的 XAMPP 并将 mysql/data 和 htdocs 从旧版本移动到最新版本。在出现此问题后,直到我按照您的指示进行操作。谢谢:)
5赞 PHPFan 1/11/2021
我这样做了,但问题仍然存在
1赞 Marius Illmann 11/24/2021
非常感谢,这很有帮助
1赞 plonknimbuzz 2/12/2022
天哪,谢谢伙计,1 天后尝试几种方法。非常感谢,兄弟!!
1赞 Pamira 10/7/2022
仍然适用于从mysql5.7.14升级到mariadb10.6.5
8赞 kan 5/28/2019 #4
  1. 停止 MySQL
  2. 将 xampp\mysql\data\ib* 从旧服务器复制到新服务器
  3. 启动 MySQL
0赞 Abu Mutea 8/16/2019 #5

我有同样的问题。我有文件夹的备份。但是将其与新安装的集成存在问题。因此,我找到了该文件并定向到我备份的数据文件夹,它运行良好。C:\xampp\mysql\dataxamppC:\xampp\mysql\bin\my.iniinnodb_data_home_dir = "C:/xampp/mysql/data"

11赞 Nazari 10/6/2019 #6

我遇到了同样的问题,但复制并没有解决我的问题,因为我安装了新版本的 xampp,如果您首先升级 xampp 从 all 和文件夹进行备份,就我而言,我只是将所有 xampp 备份到新文件夹,然后安装新的 xampp,然后您需要在启动新的 xampp 服务器之前执行以下步骤: xampp\mysql\data\ibdata1htdocsmysqlold-xampp

  1. 备份文件夹,然后从此位置备份新安装。phpmyadminibdata1xampp\mysql\data
  2. 然后转到旧的 xampp 文件夹并从旧位置复制文件。old-xampp\mysql\dataibdata1phpmyadmin
  3. 然后打开新的 xampp 文件夹并将它们粘贴到那里。xampp\mysql\data
  4. 启动 xampp 服务器。
-2赞 Muhammad Bilal 2/4/2020 #7

对我来说,我从中移除了整个文件夹(并进行了备份),并在此处粘贴了前一个文件夹,这解决了我的问题......dataxampp\mysql\data

评论

3赞 STA 3/20/2021
您的解决方案删除了我的整个数据库表
1赞 Cyril Ikelie 7/29/2022
请在执行此操作之前,将数据文件夹的内容备份到某处。Mysql 创建文件夹,用于保存数据库工作所需的文件。
15赞 Jay Momaya 5/29/2020 #8

如果您已将文件从旧备份文件夹复制并粘贴到新文件夹,那么它很简单。 只需将旧的复制到新的中即可。你可以从并重新启动你的mysql中找到它。ibdata1\xampp\mysql\data

2赞 Zurupupz 6/12/2020 #9

我之前移动了我的mysql目录,忘记将所有引用更改为\mysql\bin\my.ini中的旧位置。

更改以下三行:

datadir = "/programs/xampp/mysql/data"
innodb_data_home_dir = "/programs/xampp/mysql/data"
innodb_log_group_home_dir = "/programs/xampp/mysql/data"

将“/programs/xampp/mysql/data”更改为新位置 这个被评论了,但我还是改变了它

#innodb_log_arch_dir = "/programs/xampp/mysql/data"

评论

0赞 Zurupupz 2/28/2021
还要检查@Jay Momaya 的答案,再次发生在我身上,这也解决了它
0赞 Pooja 8/25/2021
这是完美的解决方案
0赞 Jerry Sam 5/20/2021 #10

上述解决方案都不适合我。将旧的 mysql/data 目录粘贴到新的 xampp 后,检查 ibdata1 是否具有当前用户所需的所有权限,否则尝试授予权限。然后phpmyadmin中的“空会话数据”解决了我的问题。

2赞 Taufik Hasan A 9/29/2021 #11

好的,第一步您可以从旧的 xampp xampp\mysql\data\ibdata1 复制,然后将第二步粘贴到您的 xampp 新 xampp\mysql\data\ibdata1 中, 然后打开XAMPP控制器并停止MySQL并重新启动。

我试过这个,对我有用

11赞 Abd Abughazaleh 11/7/2021 #12

不复制文件ibdata1

当我从备份文件夹中获取所有文件时,我遇到了这种情况。有一个文件不应与其他文件夹和文件一起复制,称为 ibdata1

评论

0赞 GeneCode 11/22/2021
这意味着我们不能仅出于备份或其他目的复制表文件夹。它需要复制所有数据文件夹。
0赞 Eiad Samman 9/12/2023
工作完美,似乎只有从备份文件夹复制和删除所有文件就足够了ib_logfile1ib_logfile0.info
0赞 Jopsy 3/21/2022 #13

如果您已经尝试了上述所有答案但都失败了,请首先尝试通过运行以下命令来修复您的数据库,

mysqlcheck --repair my_db_name -u root -p

然后,如果问题得到解决,

如果未修复,并且您有表的备份,但无法将其导入 PHPMyAdmin,请执行以下操作。

1. 转到 xampp\mysql\data\database_folder

2. 删除以表名开头的文件(扩展名为 .frm 和 .ibd)。例如:my_table.frm、my_table.ibd

3. 导入表格

它对我有用。

10赞 abolfazl maherani 6/10/2022 #14

您可以:

  1. 将数据文件夹重命名为 data-old
  2. 创建新文件夹并将名称设置为数据
  3. 备份文件夹复制到数据文件夹中
  4. 将 data-old 中的 ibdata1 复制到 data 文件夹
  5. 重新启动MySQL 和 Apache

解决问题后,从数据库中获取输出功率

评论

0赞 MindRoasterMir 12/4/2022
从旧文件夹复制 ibdata1 会再次出现问题。如果我删除此文件然后运行MySQL,它将自动创建并解决问题。
2赞 Ahsan Najam 9/9/2022 #15

100%工作解决方案

  1. 停止 MySQL 和 Apache 并退出 Xampp
  2. 备份“data”文件夹。

C:\xampp\mysql\data

  1. 复制此文件夹中的所有文件

C:\xampp\mysql\backup 4. 粘贴并替换到

C:\xampp\mysql\data
1赞 SandroMarques 9/27/2022 #16

Ubuntu 用户说明:

  1. 复制数据库(例如,从外部磁盘备份)。

    sudo cp -r /media/some_user/mysql/some_database/ /opt/lampp/var/mysql/

注意:从这一刻起,数据库已经出现在PHPMyAdmin中,但是如果您单击它,表格仍然不会出现

  1. 将所有者更改为(因为在复制所有者时,它被更改为mysqlroot)

    sudo chown -R mysql:mysql some_database/

注意:从这一刻起,表的名称会出现,但您看不到它们的结构或数据 - 它显示错误“#1932 - 表'some_database.some_table'在引擎中不存在”

  1. 复制文件并更改所有者。ibdata1

    sudo mv ibdata1 ibdata1_old

    sudo cp /media/some_user/mysql/ibdata1 /opt/lampp/var/mysql/

    sudo chown -R mysql:mysql ibdata1

  2. 重新启动 XAMPP

    sudo /opt/lampp/lampp restart

评论

0赞 zakaria kasmi 12/24/2022
传奇,谢谢你,拯救了我的一天!!我将旧的 ibdata1 复制到新安装文件夹中的 mysql 并使其成为所有者,它起作用了。
0赞 M.Ali El-Sayed 1/4/2023 #17

我发现以下答案很有帮助 https://stackoverflow.com/a/66804621

如果您只是将数据库从一个文件夹移动到另一个文件夹,但您的 InnoDB 表不再工作,因为找不到它们并且显示错误消息“引擎中不存在表”,那么这对 SQL 语句可以快速提供帮助:

ALTER TABLE __yourtable_name__ DISCARD TABLESPACE ;

ALTER TABLE __yourtable_name__ IMPORT TABLESPACE ;

在实践中,.IDB 文件与 分离。FRM 文件,然后再次绑定,使表格内容变为可读。

它在我的情况下有效。希望你也是。

0赞 Toki 4/5/2023 #18

请尝试以下步骤

  1. 停止MySQL和Apache服务器
  2. 复制备份文件夹
  3. 将数据库文件夹从数据文件夹复制到备份复制文件夹
  4. 从备份副本文件夹中删除 IBData1
  5. 将 IBData1 从数据文件夹复制到备份副本文件夹
  6. 删除数据文件夹
  7. 将备份复制文件夹重命名为数据文件夹
  8. 重新启动 XAMPP 服务器
0赞 Vincent Dsouza 10/31/2023 #19

如果您已经尝试了上述所有可能的解决方案,但仍然无法解决,您可以尝试以下方法:

仅当您之前进行过备份时

为此,请考虑:
  • 数据库名称为 dbnm
  • 引发错误的表是 tbnm
  • 转到 backup/dbnm/ 文件夹。
  • 复制 tbnm.ibd 和 tbnm.frm 文件。
  • 转到mysql/bin/data/dbnm/
  • 粘贴复制的文件,并替换原始文件。 看看它是否有效!!
0赞 Hasitha 12/11/2023 #20

从旧的 XAMPP 复制,然后
从那里复制 然后粘贴到你的 xampp new 中, 和
xampp\mysql\data\ibdata1theNameOfdatabasexampp\mysql\data\theNameOfdatabasexampp\mysql\data\ibdata1xampp\mysql\data\theNameOfdatabase

然后打开XAMPP控制器并停止MySQL并重新启动。

基本上,您正在替换 IBData1 和 从旧的 XAMMP 复制数据库文件