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

12:19:12 PM [mysql] Attempting to start MySQL app... 12:19:12 PM [mysql] Status change detected: running 12:19:13 PM [mysql] Status change detected: stopped 12:19:13 PM [mysql] Error: MySQL shutdown unexpectedly. 12:19:13 PM [mysql] This may be due to a blocked port, missing dependencies, 12:19:13 PM [mysql] improper privileges, a crash, or a shutdown by another method 12:19:13 PM [mysql] Press the Logs button to view error logs and check 12:19:13 PM [mysql] the Windows Event Viewer for more clues 12:19:13 PM [mysql] If you need more help, copy and post this 12:19:13 PM [mysql] entire log window on the forums

以下是错误日志的内容:

2013-08-02 12:19:12 4536 [Note] Plugin 'FEDERATED' is disabled. 2013-08-02 12:19:12 f64 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator. 2013-08-02 12:19:12 4536 [Note] InnoDB: The InnoDB memory heap is disabled 2013-08-02 12:19:12 4536 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2013-08-02 12:19:12 4536 [Note] InnoDB: Compressed tables use zlib 1.2.3 2013-08-02 12:19:12 4536 [Note] InnoDB: Not using CPU crc32 instructions 2013-08-02 12:19:12 4536 [Note] InnoDB: Initializing buffer pool, size = 16.0M 2013-08-02 12:19:12 4536 [Note] InnoDB: Completed initialization of buffer pool 2013-08-02 12:19:12 4536 [Note] InnoDB: Highest supported file format is Barracuda. 2013-08-02 12:19:12 4536 [Note] InnoDB: The log sequence numbers 0 and 0 in ibdata files do not match the log sequence number 1616798 in the ib_logfiles! 2013-08-02 12:19:12 4536 [Note] InnoDB: Database was not shutdown normally! 2013-08-02 12:19:12 4536 [Note] InnoDB: Starting crash recovery. 2013-08-02 12:19:12 4536 [Note] InnoDB: Reading tablespace information from the .ibd files...

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

2013-08-02 12:19:12 4536 [ERROR] InnoDB: 试图打开先前打开的表空间。 以前的表空间mysql/innodb_table_stats在filepath: .\mysql\innodb_table_stats.ibd使用的是空间ID: 1。 在文件路径:.\xat\payments.ibd下无法打开空间ID: 1的表空间xat/payments

日志的其余部分:

InnoDB: Error: could not open single-table tablespace file .\xat\payments.ibd InnoDB: We do not continue the crash recovery, because the table may become InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it. InnoDB: To fix the problem and start mysqld: InnoDB: 1) If there is a permission problem in the file and mysqld cannot InnoDB: open the file, you should modify the permissions. InnoDB: 2) If the table is not needed, or you can restore it from a backup, InnoDB: then you can remove the .ibd file, and InnoDB will do a normal InnoDB: crash recovery and ignore that table. InnoDB: 3) If the file system or the disk is broken, and you cannot remove InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf InnoDB: and force InnoDB to continue crash recovery here.

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


当前回答

只需遵循两个步骤

进入xampp\mysql\backup 复制备份文件夹中的所有内容 转到xampp\mysql\data 粘贴所有从备份文件夹复制的数据文件夹 这一切。

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

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

或按照文章描述修复而不丢失任何数据:

https://webjourney.dev/error-mysql-shutdown-unexpectedly-solve-without-loosing-any-data-webjourney

其他回答

以上的解决方案没有一个是无效的。它只是暂时有效。几天后,我们又一次面对同样的问题。我每次都失去了所有的脑起搏器。

我不知道确切的答案。但是,我一遍又一遍地做这3个简单的步骤。

将文件夹c:\xampp\mysql\data重命名为c:\xampp\mysql\data_old(可以使用任何名称)。 新建data文件夹c:\xampp\mysql\data 复制mysql\data_old中的所有数据库文件夹到mysql\data中

然后从XAMPP控制面板启动MySQL。

解决了!我用这个方法来解决它:

从控制面板打开shell并启动mysql:

mysqld –-console –-skip-grant-tables –-skip-external-locking

从控制面板打开另一个shell,用下面的命令修复数据库:

mysqlcheck -r --databases mysql --use-frm

停止mysql,关闭shell,正常重启mysql。

参见:https://stackoverflow.com/a/60576807/1662058

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

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

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

附录:为了确保您不会忘记以管理员身份运行XAMPP,您可以右键单击XAMPP快捷方式,转到属性,然后是高级,最后以管理员身份运行。

0.cntr+alt+delet
1.end task mysqld
2.Restart mysql.

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

移动xampp/mysql/backup文件到xampp/mysql/data 以管理员身份运行XAMPP(确保mysql已经安装,如果已经安装可以看到一个绿色的勾)

希望能有所帮助!