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

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


当前回答

记住永远不要删除这个文件(ibdata1),因为您的所有数据都会被删除

1-停止所有运行xampp服务(apache,mysql,..等)

2-重命名xampp文件夹为xampp-old

3-安装新xampp

4-通过从这个路径复制这3个文件(ibdata1,ib_logfile0,ib_logfile1) +您在xampp-old中创建的数据库文件夹来恢复数据库

mysql xampp-old \ \数据

to

xampp mysql \ \数据

并接受替换文件

5-通过将xampp-old\htdocs传输到xampp\htdocs恢复编码文件

现在启动xampp,它将处理您的所有数据

注意:如果您需要编辑apache或mysql ini,请再次执行此操作

其他回答

对我来说,我退出了Skype,它占用了80端口,然后Apache在80端口上愉快地运行,然后我运行Skype,这次它选择了另一个端口。

上述解决方案对我来说都没用。然后我做了以下事情:

我删除了C:\xampp\mysql\data\目录下的所有文件,除了这个目录下的文件夹。 它工作得非常好,但我以前的数据库现在不能工作了。 所以,如果你不关心,上面会删除所有你以前的数据库在phpmyadmin。

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

# The MySQL server
default-character-set=utf8mb4
[mysqld]
skip-grant-tables // Place this line here 
port=3306
socket="C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql"
tmpdir="C:/xampp/tmp"
datadir="C:/xampp/mysql/data"
pid_file="mysql.pid"
# enable-named-pipe
key_buffer=16M
max_allowed_packet=1M
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K

打开C:\xampp\mysql\data中的my.ini文件

Skip-grant-tables将这一行放在端口和重新启动之前,它可以工作

简单的解决方案 从Xampp控制面板打开外壳

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

然后再次打开另一个shell并运行

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

现在关闭两个shell并重新启动xampp。