2016年01月06日   码农之路   8,563 次浏览
XAMPP出现异常时就会有以下提示:
09:27:52 [mysql ] Error: MySQL shutdown unexpectedly.
09:27:52 [mysql ] This may be due to a blocked port, missing dependencies,
09:27:52 [mysql ] improper privileges, a crash, or a shutdown by another method.
09:27:52 [mysql ] Press the Logs button to view error logs and check
09:27:52 [mysql ] the Windows Event Viewer for more clues
09:27:52 [mysql ] If you need more help, copy and post this
09:27:52 [mysql ] entire log window on the forums
其实单看以上这些错误信息根本就不能解决问题,百度上的方法也是千奇百怪,根本就没用。于是我从错误日志中找到以下错误信息:
InnoDB: Error: could not open single-table tablespace file .\mysql\innodb_index_stats.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.
2015-12-30 09:27:51 5988 [Note] Plugin ‘FEDERATED’ is disabled.
2015-12-30 09:27:51 688 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.
2015-12-30 09:27:51 5988 [Note] InnoDB: The InnoDB memory heap is disabled
2015-12-30 09:27:51 5988 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2015-12-30 09:27:51 5988 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-12-30 09:27:51 5988 [Note] InnoDB: Not using CPU crc32 instructions
2015-12-30 09:27:51 5988 [Note] InnoDB: Initializing buffer pool, size = 16.0M
2015-12-30 09:27:51 5988 [Note] InnoDB: Completed initialization of buffer pool
2015-12-30 09:27:51 5988 [Note] InnoDB: Highest supported file format is Barracuda.
2015-12-30 09:27:51 5988 [Note] InnoDB: The log sequence numbers 619803155 and 619803155 in ibdata files do not match the log sequence number 620046439 in the ib_logfiles!
2015-12-30 09:27:51 5988 [Note] InnoDB: Database was not shutdown normally!
2015-12-30 09:27:51 5988 [Note] InnoDB: Starting crash recovery.
2015-12-30 09:27:51 5988 [Note] InnoDB: Reading tablespace information from the .ibd files…
2015-12-30 09:27:51 5988 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace deps/dep_codelist uses space ID: 2 at filepath: .\deps\dep_codelist.ibd. Cannot open tablespace mysql/innodb_index_stats which uses space ID: 2 at filepath: .\mysql\innodb_index_stats.ibd
InnoDB: Error: could not open single-table tablespace file .\mysql\innodb_index_stats.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的my.ini文件的[mysqld]节点(大概在150行左右)中加如下代码:
innodb_force_recovery = 1 |
然后通过xampp启动mysql,成功。再停止mysql,把my.ini刚添加的行删除或注释掉,再启动mysql,正常使用。
为什么要重启下mysql呢?这是因为加上innodb_force_recovery=1,此参数值大于0时,可以对表进行select、create、drop操作,但insert、update或者delete这类操作是不允许的。
>>> Hello World <<<
这篇内容是否帮助到你了呢?
如果你有任何疑问或有建议留给其他朋友,都可以给我留言。