XAMPP-MySQL意外关闭


131

当我打开XAMPP并单击启动MySQL按钮时,它给了我一个错误。我刚刚开始,但是现在不起作用。

12:19:12 PM [mysql]尝试启动MySQL应用...
12:19:12 PM [mysql]检测到状态更改:正在运行
12:19:13 PM [mysql]检测到状态更改:已停止
12:19:13 PM [mysql]错误:MySQL意外关闭。
12:19:13 PM [mysql]这可能是由于端口阻塞,缺少依赖项,
12:19:13 PM [mysql]不当权限,崩溃或通过其他方法关闭
12:19:13 PM [mysql] ]按下日志按钮以查看错误日志,并检查
12:19:13 PM [mysql] Windows事件查看器以获取更多线索
12:19:13 PM [mysql]如果您需要更多帮助,请复制并发布以下
12:19: 13 PM [mysql]论坛上的整个日志窗口

这是错误日志的内容:

2013-08-02 12:19:12 4536 [注意]插件“ FEDERATED”已禁用。
2013-08-02 12:19:12 f64 InnoDB:警告:已弃用innodb_additional_mem_pool_size。在将来的发行版中,此选项可能与选项innodb_use_sys_malloc和InnoDB的内部内存分配器一起删除。
2013-08-02 12:19:12 4536 [注] InnoDB:禁用了InnoDB内存堆
2013-08-02 12:19:12 4536 [注] InnoDB:互斥锁和rw_locks使用Windows互锁函数
2013-08-02 12:19:12 4536 [注] InnoDB:压缩表使用zlib 1.2.3
2013-08-02 12:19:12 4536 [注] InnoDB:不使用CPU crc32指令
2013-08-02 12:19:12 4536 [注意] InnoDB:正在初始化缓冲池,大小= 16.0M
2013-08-02 12:19:12 4536 [注意] InnoDB:缓冲池的初始化完成
2013-08-02 12:19:12 4536 [注意] InnoDB:支持的最高文件格式是梭子鱼。
2013-08-02 12:19:12 4536 [注意] InnoDB:ibdata文件中的日志序列号0和0与ib_logfiles中的日志序列号1616798不匹配!
2013-08-02 12:19:12 4536 [注意] InnoDB:数据库未正常关闭!
2013-08-02 12:19:12 4536 [Note] InnoDB:开始崩溃恢复。
2013-08-02 12:19:12 4536 [注意] InnoDB:正在从.ibd文件中读取表空间信息...

最重要的错误消息在这里:

2013-08-02 12:19:12 4536 [错误] InnoDB:
尝试打开以前打开的表空间。
上一个表空间mysql / innodb_table_stats使用空间ID:1,位于文件路径:。\ mysql \ innodb_table_stats.ibd
无法在文件路径:。\ xat \ payments.ibd中打开使用空间ID:1的表空间xat / payments

其余日志:

InnoDB:错误:无法打开单表表空间文件。\ xat \ payments.ibd
InnoDB:我们不继续崩溃恢复,因为该表可能会变成
InnoDB:如果我们无法将InnoDB日志中的日志记录应用于该表,则会损坏。
InnoDB:要解决此问题并启动mysqld:
InnoDB:1)如果文件中存在权限问题,而mysqld无法
InnoDB:打开文件,则应修改权限。
InnoDB:2)如果不需要该表,或者可以从备份中还原该表,
则可以删除.ibd文件,然后InnoDB将执行常规的
InnoDB:崩溃恢复并忽略该表。
InnoDB:3)如果文件系统或磁盘损坏,则无法删除
InnoDB:.ibd文件,您可以在my.cnf中设置innodb_force_recovery> 0
InnoDB:并强制InnoDB在此处继续崩溃恢复。

这些错误的原因是什么,如何解决?

Answers:


176

重要事项删除此文件可能会使现有的MySQL数据无法使用。谨慎使用

嘿,我刚刚做到了,它奏效了:

  1. 退出Xampp服务器
  2. 转到您的C:\xampp\mysql\data目录
  3. 删除ibdata1文件
  4. 重新启动xampp服务器

它应该工作


26
这可行,应该将其标记为正确答案。但是,文件重命名为ibdata1.bak而不是将其删除。只是为了保存。
劳伦斯·洛绍尔

23
当然,这将破坏该文件中存储的所有数据(在设置innodb_file_per_table为启用之前创建的所有InnoDB表)。日志消息中建议的方法对我来说似乎是优越的。
Tgr

17
我还必须删除ib_logfile0ib_logfile1使其正常工作
艾伦·麦克米伦

12
哎哟! 吹走ibdata1等于丢失所有数据(或至少丢失所有数据ENGINE=Innodb
Rick James

19
您可以做的最受争议的无法解释的
鲁ck

324

停!请不要删除ibdata1文件!

删除此文件就像在数据库中播放俄罗斯轮盘赌一样,它可以正常工作并重新建立所有内容,但是也可能会损害您拥有的每个数据库。相反,请首先尝试使用XAMPP随附的MySQL备份文件夹。接下来,也是如此:

  1. 重命名文件夹mysql/datamysql/data_old(您可以使用任何名称)
  2. 新建一个文件夹 mysql/data
  3. 将驻留的内容复制mysql/backup到新mysql/data文件夹中
  4. 复制所有数据库文件夹是在mysql/data_oldmysql/data (跳过mysqlperformance_schemaphpmyadmin从文件夹中data_old
  5. 最后,ibdata1从中复制文件mysql/data_old并将其替换到mysql/data文件夹中
  6. 从XAMPP控制面板启动MySQL

而且,瞧!


28
这是最好的答案,它不会要求您删除任何文件或文件夹,重要的是,它可以工作。
gegobyte

23
这是最好的答案
Kevin E. Ogbonna

8
我已经多次求助于这个答案,甚至我甚至编写了一个PowerShell脚本来自动化该过程:gist.github.com/josemmo/24e35f2b4984a4370ce2c164f5956437
josemmo

8
这应该是最好的答案
零零

4
是的,这是最好的答案。我不好,我还没有尝试过。极好的答案。您保存了我的数据库数据和许多麻烦。向你们男人致敬!
Nilesh

43
  1. 转到mysql / data /
  2. 删除所有随机文件(实际数据库文件夹除外)
  3. 重新启动ApacheMySQL

它应该修复它。


10
它删除了我所有的数据。有很多数据。
帕拉斯

11
我确认删除文件将使所有数据库无法使用。表格文件在那里,但无法显示。
Adrian P.

29

如果上述答案不起作用,则可以尝试删除数据中除文件夹以外的所有文件

转到:C:\ xampp \ mysql \ data

在此处输入图片说明

之后:转到:C:\ xampp \ mysql \ bin

然后用记事本my.ini打开 ,它看起来像这样。

在此处输入图片说明

然后删除端口3306或对其添加注释,并将其更改为8111,然后使用管理员运行xamp,并且运行良好。


爱你@Matthew Magante。您已经解决了我过去一年面临的问题。非常感谢。
Kashif Iftikhar

1
现在,我没有在xampp中收到该错误,但是phpmyadmin仍然无法正常工作
Sarvesh Tiwari

谢谢,@ fabrizio valencia修复效果很好,但是经过两到三遍后,它不再起作用了,这作为第二个解决方案得以解决。
菲尔(Fer)

16

当您以管理员身份运行XAMPP时,关闭MySQL经常会导致损坏,这意味着您必须修复或删除表。为避免这种情况,您需要以管理员身份运行XAMPP,或使用正确的命令提示符方法关闭MySQL。

您可以ibdata1按照Kratos的建议删除,但是这可能会使数据库损坏,因为数据库的其他部分仍在该/mysql/data/文件夹中。就我而言,这些残留数据使我无法成功安装WordPress。

消除损坏的一种更干净的方法是还原整个/mysql/data/文件夹。Windows具有内置的文件夹版本控制-右键单击/mysql/data/并选择Restore previous versions。然后,您可以删除文件夹的当前内容,并将其替换为旧版本的内容。

附录:为确保您不会忘记以管理员身份运行XAMPP,可以右键单击XAMPP快捷方式,转到Properties,然后单击Advanced,最后单击Run as administrator


1
这应该被接受为正确答案。如果除去ibdata1,将有大量的孤立表。
肖恩

谢谢,您尝试了许多不同的事情后解决了我的问题。
user3089840 2015年

还为我解决了问题
Gaz Smith,

不错的解释:D谢谢。
logbasex

仅当您在Windows中定期创建还原点时,“还原以前的版本”选项才有效。:(
nockieboy

15

我的Xampp MySQL工作如下:

01.Go to mysql/data/ directory
02. delete the ibdata1 & ib_logfile*(ib_logfile0,ib_logfile1,ib_logfile101) file
03. restart xampp server

这对我来说是最有效的方法!
Youssef Boudaya

14

[mysqld]在mysql配置文件(my.ini)中的部分下面添加以下行,然后重新启动apache Web服务器和mysql服务。

[mysqld]
innodb_force_recovery = 4

7
阅读关于你在做什么,你做之前:dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html
marcovtwout

非常感谢,对我有很大帮助。
罗恩·克莱顿(Lohn Claidon)2014年

5
最好从值1开始,并在每次不起作用时将其递增。值1-3被视为保存。4-6可能会破坏数据!
CoR

这对我有帮助。如前所述,首先使用值1-3。2对我起作用。我必须转储所有数据库,使用备份文件夹重置mysql数据,然后导入转储。如果您想保留数据,这将很有帮助
claw68 '20

13

C:\xampp\mysql\data\mysql_error.log尝试启动mysql时,我遇到了同样的错误。

2013-08-05 01:20:32 6780 [ERROR] InnoDB: Attempted to open a previously 
  opened tablespace. Previous tablespace mysql/slave_relay_log_info uses 
  space ID: 3 at filepath: .\mysql\slave_relay_log_info.ibd. Cannot open  
  tablespace test_database/test_table which uses space ID: 3 at filepath:  
  .\test_database\test_table.ibd

您必须仔细阅读错误。这表示test_database阻止mysql启动。

您可以删除有问题的数据库,这些步骤可以解决问题:

  1. 确保mysql和xampp完全关闭。
  2. 转到安装了mysql的目录,我的目录是: C:\xampp\mysql\data
  3. 您应该看到一个文件夹,其中包含您创建的数据库的名称。我的是test_database
  4. 在其他位置创建一个新文件夹 C:\xampp\mysql\data\mysql\backuptablespace
  5. 将有问题的数据库表文件夹拖放(不要删除)到备份目录。
  6. 尝试再次启动mysql。对我来说,它像预期的那样在1秒内启动。

如果不起作用,请将文件放回开始的位置,然后再回到开始的位置。

如果您不想删除数据库并且没有备份,请执行以下操作:

如果您没有表数据的备份,并且由于某些东西损坏而导致mysql无法启动,那么您将不得不使用消除过程来猜测并检查您破坏它的方式。按着这些次序:

  1. 复制整个副本C:\xampp\并将其存储在安全的地方,以便您可以回到开始的地方。
  2. 使用“二进制搜索”方法尝试在mysql数据库中查找损坏的项目。它可以是文件,表,数据库,用户或其他任何东西。
  3. 删除整个数据库,看看是否允许mysql启动。如果是这样,则放回数据库并尝试删除一些表。如果不是,请尝试取消其他操作,直到它启动为止。
  4. 尝试从以下文件中删除这些文件C:\xampp\mysql\data\mysql:db.frm db.MRD db.MYI db.opt user.frm user.MYD user.MYI

  5. 当您启动mysql时,请尝试放回原处,直到找到添加的一件事阻止它启动。一个好处是,您可以了解mysql的工作原理。

核选项:

您所做的事情搞砸了mysql服务器。XAMPP的卸载和重新安装应撤消损坏。


7

我也遇到了这个问题,这就是我解决的方法。
1.确保xampp不在子目录下。例如,应为C:\ xampp2
。在运行应用程序时,您可能需要以管理员身份运行。

希望这会成功!


4

这是我所做的。我重新启动计算机。接下来,我运行services.msc。我停止了MySQL服务,然后重新启动了它。重新启动的Xampp服务器。


这不是有效答案!
Abhiarora

无效答案
Soumyajit杜塔

4

上面没有解决方案对我有用。然后我做了以下:

我删除了C:\ xampp \ mysql \ data \目录中的所有文件,但该目录中的文件夹除外。它工作得很好,但是我以前的数据库现在无法正常工作。因此,如果您不在乎,请执行上述操作,它将删除phpmyadmin中所有以前的数据库。


4

在我的情况下,我按照以下步骤进行了工作:

  1. 在Xampp控制面板中,单击右侧工具栏上的“服务”按钮

  2. 然后从服务列表中找到“ MySQL”

  3. 单击它,然后从面板的左侧单击“停止”

  4. 在Xampp控制面板中返回,然后单击开始。


1
谢谢,没有其他选择对我有用,这个选择对我有用。非常感谢
user3808307'1

@ user3808307很高兴它为您提供了帮助:)
Sobhan


3

我遇到了同样的问题,上述解决方案都没有帮助我。我转到mysql配置文件(my.ini)并更改了[mysqld]下的端口号。默认情况下,mysql在3306端口上运行。

port= 3306

我将其更改为

port= 8111

然后以管理员身份运行。最后这对我有用。


3

切勿删除该文件(ibdata1),因为您的所有数据都将被删除!!!
我建议三种方式:

答:
1-从退出XAMPP control panel
1-将文件夹重命名mysql/datamysql/data_old(可以使用任何名称)
2-创建一个新文件夹mysql/data
3-将驻留的内容复制mysql/backup到新mysql/data文件夹中
4-将所有数据库文件夹复制mysql/data_old到中mysql/data(跳过mysql,performance_schema和phpmyadmin文件夹(来自data_old))
5-最后,从中复制ibdata1文件mysql/data_old并将其替换在内部mysql/data folder
6-重新启动系统。

B
1-停止所有sql服务。
2-接下来,再次启动所有sql服务。

在此处输入图片说明

C
1-打开XAMPP控制面板
2-单击Config按钮,在mysql前面,单击my.ini 3-更改客户端端口和服务器端口。

在此处输入图片说明



在此处输入图片说明


更改端口对我
有用

2

伙计们只是确保您没有安装MySql Server。因为我已经预安装了MySql服务器,所以当我从xampp控制面板启动mysql时,发生了一些端口冲突,并且无法正常工作。因此,从xampp控制面板启动mysql之前,请确保未安装mysql服务器。我使用.net,所以过去已经安装了mysql服务器。卸载它解决了我的问题。


2

我已经通过在任务管理器上结束mysqlid的任务来解决了该问题。在此处输入图片说明


谢谢,对我有帮助。删除ib1的那种灵魂为我创造了新的问题要解决。
Skotee


2

我解决了类似的MySQL错误,我认为此答案将帮助您修复相同类型的MySQL数据库错误。 XAMPP控制面板上的MySQL错误

解:

  • 转到mysql数据库中的“数据”目录。
  • 我在计算机上的D:驱动器上安装了XAMPP,计算机的mysql“数据”目录位置为“ D:\ xampp \ mysql \ data \”。您可能有不同的位置。

备份MySQL“数据”文件夹

  • 首先,您应该使用任何压缩软件创建“数据”文件夹的备份。

  • 命名为“ data_backup.zip”或您想要的任何压缩类型。

  • 我使用winrar压缩软件来压缩和备份mysql“ data”文件夹。

重命名“数据”文件夹

  • 将“ data”文件夹重命名为“ data-oldfiles”。将数据目录重命名为任何新目录名称非常重要。

创建一个新的“数据”文件夹

  • 创建一个新文件夹,并将文件夹名称命名为“ data”
  • 为了解决这个问题,我们需要在mysql数据库中创建一个新的“数据”目录。

复制“备份”文件夹中的内容

  • 转到“备份”文件夹并复制所有文件。
  • 将文件从备份文件夹粘贴到数据文件夹
  • 现在从XAMPP启动MySQL数据库。
  • 您的MySQL数据库将正确启动,而不会显示任何错误。

传输所有MySQL项目数据库,数据文件和日志文件

  • 如果您有许多用于各种项目的数据库,则必须将所有数据库从“ data-oldfiles”文件夹传输到“ data”文件夹。

  • 从旧数据文件复制所有数据库,然后粘贴到数据文件夹。

  • 现在,您必须将数据文件“ ibdata1”和所有日志文件“ ib_logfile0,ib_logfile1”从旧数据文件夹复制到数据文件夹。

  • 如果您有许多id_logile,则将它们全部复制。

  • 现在从XAMPP启动MySQL。

  • 转到phpMyAdmin检查所有数据库是否可用并且正在运行。

  • 现在从本地主机启动任何网站项目,以检查MySQL数据库。

问题已经解决了 !!

在XAMPP上解决MySQL错误

  • 现在您将看到问题已解决,错误消息“错误:MySQL意外关闭。” 不会再显示。
  • 如果您对此问题有任何疑问,请随时在评论部分中提问。

您可以在下面的链接中阅读详细的教程: 错误:MySQL意外关闭– 5个简单步骤即可解决

您也可以观看视频教程来解决此问题:

[已解决]错误:MySQL意外关闭


2

对我有用的是:

  1. 首先,我LogsMySql参加XAMPP panel
  2. 最后,它说您正在端口中运行另一个mysqlid实例 3306
  3. 我打开了我的task manager(Ctrl+Shift+Esc)查找mysqlidEnd the task

1

配置-> Apache->打开httpd.conf。搜索侦听或80,将侦听端口更新为8081,然后保存并重新启动服务器。哦,如果有,请关闭Skype。


2
是的,已经解决了。我发誓要在发布之前重新安装,但是我想不是。谢谢:)
奥斯汀

1

在我将mysql数据和htdocs同步到保管箱的情况下,我只需要删除mysql / data文件夹和子文件夹中的冲突文件。冲突的文件可以通过名称来识别,Dropbox会告诉您。它为我解决了问题。


1

确保系统时间正确。该矿定于2040年,更正了日期,解决了这个问题。


1

对我来说,我退出了占用80端口的Skype,然后Apache在80端口上愉快地运行,而不是我运行Skype,这次它选择了另一个端口。


1

如果您使用的是MariaDB,则可以尝试以下操作:

  1. 转到mysql / data /
  2. aria_log_control重命名为aria_log_control_old
  3. 重新启动“ Mysql”

1

我在mysql / bin / my.ini中评论此语句

'innodb_additional_mem_pool_size=2M'

它解决了我的问题。比你们每个人


我没有该行的所有
VIPUL Hadiya

你在窗户上吗?您的xampp版本是什么?
肯尼

是的,使用XAMPP 3.2.4赢得10
Vipul Hadiya

您有权访问mysql / bin / my.ini文件吗?
肯尼郡波士顿(Boston Kenne),

gist.github.com/susanBuck/52f8a8508d94834332b1d565fb3a0e00 看到此链接,并检查您的文件位置是否应在C:\ xampp \ mysql \ bin \ my.ini中,找到innodb_additional_mem_pool_size行并对其进行注释。
波士顿肯尼(John Kenneth)

1

这意味着您已经在端口3306上运行了一个MySQL数据库。

在XAMPP控制面板中,按“配置”按钮,然后按“ my.ini”。之后,按Ctrl-F并搜索“ 3306”。将找到的任何“ 3306”替换为您选择的其他端口号(您可以选择3307或3308-我选择了2811,它起作用了)。

在替换了写入“ 3306”的每个位置之后,保存文件并再次按控制面板上的“开始”。



1

对我来说,问题是:

我习惯了hibernatePC,而不是因为项目规模大而关闭。我懒得重新打开所有程序。

在尝试任何其他操作之前,我建议您做以下简单的事情。否则,您会搞砸MySQL服务器。

  1. 打开任务管理器并结束XAMPP进程。
  2. 以管理员身份重新运行XAMPP应用程序。

如果不行,

  1. 保存所有未保存的程序,然后重新启动PC。
  2. 以管理员身份运行XAMMP。

另外,请确保检查33065040端口。这两个端口是在默认设置下运行MySQL所必需的。

查看@Ryan Williams答案,以了解为什么最好以管理员身份运行XAMPP。


1

我确实从c:\ xampp \ mysql \ data \中删除了每个文件,但my.ini除外,它可以正常工作


当然可以,但是此操作后某些表不存在。我认为备份数据文件夹为zip文件或其他路径。然后尝试执行此操作。完成还原后,ibdata1和ib_logfile0和ib_logfile1现在可以正常工作,并且所有表都已还原操作:服务器= Xampp应用程序=旅行者管理员(Laravel)
Nijat Aliyev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.