当我打开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.

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


当前回答

如果崩溃信息是“mysql.exe已停止工作”。以管理员身份运行xampp-control.exe将立即解决您的问题。

其他回答

从C:\xampp\mysql创建一个备份你的mysql文件夹。 然后转到C:\xampp\mysql\backup复制所有文件并粘贴到C:\xampp\mysql\data中。

然后从你的旧备份文件夹中找到ibdata1文件,你可以在C:\xampp\mysql\data中找到它。复制此文件并粘贴到C:\xampp\mysql\data中。

现在重新启动xampp,它应该工作了。

下面是解决这个问题的方法:

打开C:\xampp\mysql\data 您将看到一个名为mysql/data的文件夹 将该文件夹从mysql/data重命名为mysql/data_not_useful任何你想给的名字。 创建一个名为mysql/data的新文件夹。 复制mysql/backup的所有文件,粘贴mysql/data。 现在转到mysql/data_not_useful并从那里复制文件ibdata1。 然后粘贴到mysql/data(你必须替换文件)。 重新启动xampp服务器。 现在运行你的mysql服务器。

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

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

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

如果你不需要损坏表中的数据,你可以通过丢弃表空间来删除它:

ALTER TABLE sakila.actor DISCARD TABLESPACE;

之后,你可以删除表本身:

DROP TABLE sakila.actor;

如果第一步不起作用,首先替换actor。从具有相同结构的空表中复制Ibd文件。

我尝试了上面所有的答案,但对我来说都不管用。所以最后我尝试了下面的方法,它100%适合我。

如果您担心无法执行以下步骤,为安全起见,您可以对整个XAMPP文件夹进行备份。

第一步:将c:\xampp\mysql\data文件夹重命名为c:\xampp\mysql\data_bkp

新建文件夹c:\xampp\mysql\data。

第三步:复制c:\xampp\mysql\backup中的内容到新的c:\xampp\mysql\data文件夹中。

第四步:复制所有数据库文件夹c:\xampp\mysql\data_bkp到c:\xampp\mysql\data(注意:不要复制mysql、performance_schema和phpmyadmin文件夹)。

步骤5:从c:\xampp\mysql\data_bkp复制ibdata1文件,并将其替换到c:\xampp\mysql\data文件夹中。

步骤6:从XAMPP控制面板启动MySQL。