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

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


当前回答

解决方案:遵循下面列出的步骤。

步骤1。将文件夹c:\xampp\mysql\data重命名为c:\xampp\mysql\data_bkp(可以使用任何名称)。

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

步骤3。复制mysql\backup中的内容到新的mysql\data文件夹中。

步骤4。将mysql\data_bkp中的所有数据库文件夹复制到mysql\data中(跳过mysql\data_bkp中的mysql、performance_schema和phpmyadmin文件夹)。 IMPORTATN注意:-请不要替换现有的文件,同时粘贴(点击跳过这些文件)

第5步。最后从mysql\data_bkp复制ibdata1文件,并将其替换到mysql\data文件夹中。

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

而且,它已经完成了。没有数据库丢失,没有端口更改,没有以管理员身份运行,没有强制恢复,没有杀死mysqld进程,没有从以前的版本恢复,没有更多的错误。

其他回答

如果上面提到的答案不工作,您可以尝试删除数据中的所有文件,除了文件夹

转到: C:\xampp\mysql\data

后: Goto: C: \ xampp \ mysql \ bin

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

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

步骤01:如果启动XAMPP MySQL时出现错误, 按照以下步骤轻松解决这个问题。

步骤02:停止服务器并进入配置。

步骤03:打开my.ini文件。

步骤04:在记事本文本中找到这2个端口号。

步骤05:更改这两个端口号3306—> 3308或任何其他数字。

使用Ctrl+S保存文本文件后

步骤07:转到XAMPP安装文件夹并打开XAMPP文件夹。 步骤08:找到phpMyAdmin文件夹。

步骤09:打开phpMyAdmin文件夹,找到config.inc.php文件。

步骤10:Change Here端口号之前您在步骤05中修改的端口号。(如3008)和保存此文本文件。

步骤11:关闭所有文件后,转到XAMPP服务器。

步骤12:再次启动MySQL服务器。

步骤13:打开浏览器,输入URL——>> localhost 步骤14:进入PhpMyAdmin

步骤15:phpMyAdmin is Working normal Now。

如果启动Apache服务器时出现错误,

步骤01:停止服务器,并打开配置文件。

步骤02:在文本文件中找到这个Listen数字。

步骤03:将80更改为8000或任何其他值。并保存文本文件。

步骤04:保存文本文件后,打开XAMPP服务器并再次启动Apache服务器。

打开你的网页浏览器。 步骤06:输入localhost:8000

步骤07:现在你可以打开phpMyAdmin。

注意:更改Apache端口号后,必须在URL中的localhost:后面添加。

-----------谢谢大家-----------

如果以上任何一种方法都不起作用,制作Xampp目录的备份并重新安装Xampp。这当然有用!

如果这里列出的解决方案都不适合你和我一样,那么

进入任务管理器。 进入“服务”选项卡。 查找名为“MySQL80”的服务。 右键单击它并选择“stop”。 回到XAMPP控制面板,启动MySQL服务。

这对我很管用。

当我试图启动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: .\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启动。

你可以清除这个有问题的数据库,以下步骤可以解决这个问题:

确保mysql和xampp完全关闭。 去你的mysql安装目录,我的是:C:\xampp\mysql\data 您应该看到一个文件夹,其名称为您创建的数据库。我的是test_database。 在其他地方创建一个名为C:\xampp\mysql\data\mysql\backuptablespace的新文件夹 将有问题的数据库表文件夹拖放到备份目录中(不要删除)。 重新启动mysql。对我来说,它像预期的那样在1秒内就开始了。

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

如果你不想删除数据库并且没有备份:

如果你没有表数据的备份,mysql不会启动,因为某些东西损坏了,你将不得不使用消除的过程来猜测和检查你的方式,确切地说,你做了什么损坏了它。遵循以下步骤:

Make a clone of the entire C:\xampp\ and store it somewhere safe so you can get back to where you started. Use a "binary search" approach to try to locate the corrupted item in the mysql database. It could be a file, or a table, or a database, or a user or anything. Delete the entire database and see if that allows mysql to start. If it does, then put back the database and try removing some of the tables. If it doesn't, then try yanking out something else until it does start. Try removing these files from C:\xampp\mysql\data\mysql: db.frm db.MRD db.MYI db.opt user.frm user.MYD user.MYI When you get mysql to start, try putting things back until you find the one thing that you add which prevents it from starting. One bonus for this is you learn how mysql works under the hood.

核选项:

你搞砸了mysql服务器。卸载并重新安装XAMPP可以消除损坏。