如何解决“错误:MySQL意外关机”?

sy5wg1nm  于 2022-09-18  发布在  Java
关注(0)|答案(30)|浏览(168)

当我打开XAMPP并点击Start 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[MySQL]按日志按钮查看错误日志并检查
12:19:13 PM[MySQL]有关更多线索的Windows事件查看器
下午12:19:13[MySQL]如果您需要更多帮助,请复制并发布此信息
12:19:13 PM[MySQL]论坛上的整个日志窗口

以下是错误日志的内容:

2013-08-02 12:19:12 4536[注]插件‘Federated’已禁用。
2013-08-02 12:19:12 F64 InnoDB:警告:已弃用INNODB_ADDIGATED_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:Mutexes和RW_lock使用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:最高支持的文件格式为Barracuda。
2013-08-02 12:19:124536[注]InnoDB:ibdata文件中的日志序列号0和0与ib_LOG文件中的日志序列号1616798不匹配!
2013-08-02 12:19:12 4536[注]InnoDB:数据库未正常关闭!
2013-08-02 12:19:12 4536[注]InnoDB:开始崩溃恢复。
2013-08-02 12:19:12 4536[注]InnoDB:正在从.ibd文件中读取表空间信息...

最重要的错误消息如下:

2013-08-02 12:19:12 4536[错误]InnoDB:

尝试打开以前打开的表空间。
以前的表空间mysql/Innodb_table_stats在文件路径:.\mysql\Innodb_table_stats.ibd中使用空间ID:1。
无法打开表空间xat/Payments,该表空间在文件路径*.\xat\payments.ibd*中使用空间ID:1

日志的其余部分:

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

这些错误的原因是什么?我如何才能纠正它们?

3zwtqj6y

3zwtqj6y1#

**重要提示:请勿删除ibdata1文件。你可以毁掉你所有的数据库。

相反,请先尝试使用XAMPP附带的MySQL备份文件夹。接下来的步骤也是如此:

1.将文件夹mysql/data重命名为mysql/data_old
1.复制mysql/backup文件夹,命名为mysql/data
1.将所有数据库文件夹从mysql/data_old复制到mysql/data(mysqlperformance_schemaphpmyadmin文件夹除外)
1.将mysql/data_old/ibdata1文件复制到mysql/data文件夹
1.从XAMPP控制面板启动MySQL

然后,瞧啊!

yvt65v4c

yvt65v4c2#

重要提示删除此文件可能会导致任何已有的MySQL数据不可用。谨慎使用

嘿,我刚刚这么做了,它起作用了:

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

它应该能行得通

ufj5ltwl

ufj5ltwl3#

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

转到:C:\xampp\MySQL\Data

之后:GOTO:C:\xampp\MySQL\bin

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

然后删除或注解端口3306并将其更改为8111,然后以管理员身份运行xamp,其工作正常。

w3nuxt5m

w3nuxt5m4#

2022年6月

免责声明

虽然很多人说“它成功了”,但很少有人说“它没有成功”。

很难说原因是什么,而且没有奏效。就我个人而言,下面提供的解决方案对我很有效,到目前为止我没有得到任何问题,因此我分享了这一点。

我不建议卸载,因此您基本上可以备份文件并尝试此解决方案。如果不起作用,则重新放置这些文件。

支持其他版本

这个问题也适用于其他XAMPP版本。
我没有亲自测试过,但一些用户已经测试过了。

  • (如果你测试了不同的版本,请在评论中让我知道,我会在这里添加)*

  • XAMPP v8.1.6-SAEID Z

  • XAMPP v7.4.16-CapelliC

  • XAMPP v3.3.0-我自己

2022年2月(问题)

  • 今天(2022年2月2日)我也遇到了同样的问题。

我使用下面提到的相同解决方案修复了此问题(请参阅**2021年12月(解决方案))*

XAMPP问题截图

XAMPP修复

2021年12月(解决方案)

由于这个问题是持续活跃的,
我会尽我最大的努力解决它。

我的问题

每当这个问题发生时,我都会访问这个帖子。我唯一试过的就是卸载并重新安装Xampp,这解决了这个问题。那是在我的旧系统上。

我正在使用全新的Windows10,没有多余的软件或问题,而且我在很长一段时间后再次意外关机。我来问这个问题,希望有人能告诉我到底发生了什么,而不是解决这些问题。但不幸的是,我找不到它。

只是澄清一下,我的新问题不是

  • 端口
  • 意外停摆
  • Windows卡住
  • 不需要的软件
  • 病毒或恶意软件。

有一天我打开了xampp,它停止工作了。

方法一*(2021年12月22日)*

1.停止MySQL.
1.转到C:/xampp/mysql目录,复制data文件夹并将其保存在其他地方(可能在另一个驱动器中)作为备份。
1.转到您的原始data文件夹(C:/xampp/mysql),并按类型对文件进行排序。
1.选择类型为INFO File的文件并将其删除(如下截图)。
1.启动MySQL。现在应该行得通了。

方法一截图

重要信息

上面的解决方案并不一定总能解决问题。有时情况并非如此。为了避免丢失数据的重大风险,可以尝试以下这些方法。

  • 仅在需要时才在控制面板中打开MySQL。
  • 不要将XAMPP控制面板设置为打开Windows启动。
  • 尽可能备份您的数据库。如果不是,试着每个周末备份一下。

PS:每当上述方法不起作用时,我都会尝试更新这个答案。我将尝试在不卸载XAMPP的情况下以最简单的方式解释它。

如果对你有效,请让我知道。

2nc8po8w

2nc8po8w5#

1.进入MySQL/Data/
1.删除所有随机文件(实际数据库文件夹除外)
1.重启ApacheMySQL

它应该会解决这个问题。

9udxz4iz

9udxz4iz6#

工作解决方案:-按照下面列出的步骤操作。

第一步。将文件夹c:\xampp\mySQL\data重命名为c:\xampp\mySQL\data_bkp(您可以使用任何名称)。

第二步。创建一个新文件夹c:\xampp\mySQL\data。

第三步。将MySQL\Backup中的内容复制到新的MySQL\Data文件夹。

第四步。将MySQL\Data_BKP中的所有数据库文件夹复制到MySQL\Data中(跳过MySQL\Data_BKP中的MySQL、Performance_SCHEMA和phpmyadmin文件夹)。重要提示:-粘贴时请勿替换现有文件(点击跳过这些文件)

**步骤5.**最后从MySQL\data_bkp复制ibdata1文件,替换到MySQL\Data文件夹中。

第六步。从XAMPP控制面板启动MySQL。

然后,完成了。不会丢失数据库,不会更改端口,不会以管理员身份运行,不会强制恢复,不会终止mySQLD进程,不会从以前的版本恢复,也不会再有错误。

q7solyqu

q7solyqu7#

只需遵循两个步骤

1.转到Xampp\MySQL\Backup从备份文件夹复制所有内容
1.转到Xampp\MySQL\Data粘贴从备份文件夹复制的Data文件夹中的所有内容
1.就这些。

也可以按照视频描述进行修复,不会丢失任何数据:

https://www.youtube.com/watch?v=hB1wshpP3Jc

luaexgnf

luaexgnf8#

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

您可以按照Kratos的建议删除ibdata1,但这可能会导致数据库损坏,因为数据库的其他部分仍在/mysql/data/文件夹中。在我的例子中,这些残留的数据阻止了我成功安装WordPress。

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

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

2fjabf4q

2fjabf4q9#

更新4月(2022)

1.将文件夹MySQL/Data重命名为MySQL/Data_old
1.复制MySQL/Backup文件夹,命名为MySQL/Data
1.将您所有的数据库文件夹和MySQL文件夹从MySQL/data_old复制到MySQL/data
1.将MySQL/data_old/ibdata1文件复制到MySQL/data文件夹

从XAMPP控制面板启动MySQL

参考资料

https://www.youtube.com/watch?v=ipMedkjMupw&ab_channel=GeekyScript

bybem2ql

bybem2ql10#

我的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
nhaq1z21

nhaq1z2111#

当我尝试启动MySQL时,我的C:\xampp\mysql\data\mysql_error.log出现了同样的错误。

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: .mysqlslave_relay_log_info.ibd. Cannot open  
  tablespace test_database/test_table which uses space ID: 3 at filepath:  
  .test_databasetest_table.ibd

你必须仔细阅读错误。这说明test_database正在阻止MySQL启动。

您可以清除有问题的数据库,以下步骤可以修复问题:

1.确保MySQL和Xampp已完全关闭。
1.进入您的MySQL安装目录,我的目录为:C:\xampp\mysql\data
1.您应该看到一个与您创建的数据库同名的文件夹。我的是test_database
1.在其他位置创建一个名为C:\xampp\mysql\data\mysql\backuptablespace的新文件夹
1.将违规数据库表文件夹拖放(不要删除)到备份目录。
1.尝试重新启动MySQL。对我来说,正如预期的那样,它在1秒内就开始了。

如果不起作用,把文件放回你开始的地方,你就会回到你开始的地方。

如果您不想删除数据库,也没有备份:

如果您没有表数据的备份,并且MySQL将因为某些内容被损坏而无法启动,那么您将不得不使用消除过程来猜测和检查您到底做了什么破坏了它。请执行以下步骤:

1.克隆整个C:\xampp\,并将其存储在安全的地方,这样你就可以回到你开始的地方。
1.使用“二分查找”方法在MySQL数据库中尝试定位被破坏的项目。它可以是一个文件、一个表、一个数据库、一个用户或任何东西。
1.删除整个数据库,看看是否允许启动MySQL。如果是,则放回数据库并尝试删除一些表。如果没有,那么试着拔出其他东西,直到它真的启动。
1.尝试从C:\xampp\mysql\data\mysql中删除以下文件:db.frm数据库.MRD数据库.MYI数据库.opt用户.frm用户.MYD用户.MYI
1.当你启动MySQL时,试着把东西放回去,直到你发现你添加的东西阻止了它启动。这样做的一个好处是您了解了MySQL如何在幕后工作。

核选项:

你的所作所为搞砸了MySQL服务器。卸载并重新安装XAMPP应该会恢复损坏。

yws3nbqq

yws3nbqq12#

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

[mysqld]
innodb_force_recovery = 4
2ic8powd

2ic8powd13#

Step 1 : Close Xampp controller completely
Step 2 : Open C:\xampp\mysql\backup
Step 3 : Copy all the files from backup folder
Step 4 : Open C:\xampp\mysql\data
Step 5 : Paste the all the files in data folder
Step 6 : Re-start the Xampp controller

7vhp5slm

7vhp5slm14#

I also faced this issue and this is how I solved.

  1. Make sure xampp is not under sub-directory. For example, it should be C:\xampp
  2. You might need to run as administrator in running the application.

Hope this will work!

k10s72fa

k10s72fa15#

Never delete this file (ibdata1) because all your data will be deleted!!!
I suggest three ways :

A:

1- Exit from XAMPP control panel.
1- Rename the folder mysql/data to mysql/data_old (you can use any name)
2- Create a new folder mysql/data
3- Copy the content that resides in mysql/backup to the new mysql/data folder
4- Copy all your database folders that are in mysql/data_old to mysql/data (skipping the mysql, performance_schema, and phpmyadmin folders from data_old)
5- Finally copy the ibdata1 file from mysql/data_old and replace it inside mysql/data folder
6- Reastart your system.

B:

1- Stop all sql services.
2- Next, start all sql services again.

C:

1- Open XAMPP control panel
2- Click on Config button, in front of mysql, click on my.ini

3- change client port and server port.

相关问题