当前位置: 动力学知识库 > 问答 > 编程问答 >

XAMPP - MySQL shutdown unexpectedly

问题描述:

When I open XAMPP and click start MySQL button and it gives me an error I had it started just before but now it isn't working.

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

Here is the contents of the error log:

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...

The most important error message is here:

2013-08-02 12:19:12 4536 [ERROR] InnoDB:

Attempted to open a previously opened tablespace.

Previous tablespace *mysql/innodb_table_stats* uses space ID: 1 at filepath: *.\mysql\innodb_table_stats.ibd*.

Cannot open tablespace xat/payments which uses space ID: 1 at filepath: .\xat\payments.ibd

The rest of the log:

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.

What is causing these errors and how can I remedy them?

网友答案:

Hey I just did this and it worked:

  1. exit Xampp server
  2. go to your C:\xampp\mysql\data directory
  3. delete the ibdata1 file
  4. restart xampp server

It should work

网友答案:

Add the following line below the [mysqld] section in the mysql config file (my.ini) and restart the apache web server and the mysql service afterwards.

[mysqld]
innodb_force_recovery = 4
网友答案:

I got the same kind of error in my C:\xampp\mysql\data\mysql_error.log when trying to start mysql.

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

You'll have to read the error closely. This says that test_database is preventing mysql from starting.

You could blow away the offending database, these steps fix the problem:

  1. Make sure mysql and xampp is shut down completely.
  2. Go to your directory where mysql is installed, mine is: C:\xampp\mysql\data
  3. You should see a folder with the name of a database that you created. mine was test_database.
  4. Create a new folder somewhere else called C:\xampp\mysql\data\mysql\backuptablespace
  5. Drag and drop (don't delete) the offending database table folder to the backup directory.
  6. Try to start mysql again. For me it started right up in 1 second as expected.

If it doesn't work, put the file back where you started and you'll be back where you started.

If you don't want to delete the database and don't have backups:

If you don't have backups of table data and mysql won't start because something is corrupted you'll have to use the process of elimination to guess-and-check your way to exactly what you did that corrupted it. Follow these steps:

  1. Make a clone of the entire C:\xampp\ and store it somewhere safe so you can get back to where you started.
  2. 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.
  3. 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.
  4. Try removing these files from C:\xampp\mysql\data\mysql: db.frm db.MRD db.MYI db.opt user.frm user.MYD user.MYI

  5. 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.

Nuclear option:

Something you did screwed up the mysql server. An uninstall and reinstall of XAMPP should undo the corruption.

网友答案:
  1. Go to mysql/data/
  2. Delete all random files (except the actual database folders)
  3. Restart Apache and MySQL.

It should fix it.

网友答案:

I also faced this issue and this is how I solved.
1. Make sure xampp is not under sub-directory. For example, it should be C:\xampp
2. You might need to run as administrator in running the application.

Hope this will work!

网友答案:

When you're not running XAMPP as an administrator, shutting down MySQL frequently causes corruption which means you have to repair or delete your tables. To avoid this you need to either run XAMPP as an administrator, or use the proper command prompt method for shutting down MySQL.

You can delete ibdata1 as Kratos suggests, but this can leave you with a broken database as other pieces of your database are still in the /mysql/data/ folder. In my case, this residual data stopped me successfully installing WordPress.

A cleaner way of undoing the damage is to revert your whole /mysql/data/ folder. Windows has built-in folder versioning — right click on /mysql/data/ and select Restore previous versions. You can then delete the current contents of the folder and replace it with the older version's contents.

Addendum: To ensure that you don't forget to run XAMPP as an administrator you can right click the XAMPP shortcut, go to Properties, then Advanced, and finally tick Run as administrator.

网友答案:

My Xampp MySQL worked just follows as below:

01.Go to mysql/data/ directory
02. delete the ibdata1 & ib_logfile*(ib_logfile0,ib_logfile1,ib_logfile101) file
03. restart xampp server
网友答案:

Config->Apache->Open httpd.conf. search for Listen or 80,update listen port to 8081 save and restart server. Oh and shutdown Skype if you have it.

网友答案:

For me I quit the skype, which was occupying port 80 , than Apache run happily on port 80, than I ran skype and it picked other port this time .

网友答案:

Make sure the system time is correct. Mine was set to the year 2040 somehow, correcting the date solved the problem.

网友答案:

In my case in which I synced my mysql data and htdocs to dropbox, I just needed to delete the conflicted files in mysql/data folder and subfolders. The conflicted files can be identified by its names, dropbox will tell you that. It has solved the problem for me.

网友答案:

For this, you need to click on the x option under Modules Services and make MYSQL services installed. Then start the services. Here you go.

网友答案:

Here is what I did. I restarted my computer. Next I run services.msc. I stopped the MySQL service then restarted it. The restarted the Xampp server.

网友答案:

No solution above worked for me. then I did below:

I deleted all the files inside C:\xampp\mysql\data\ directory except folders in this directory. It worked perfectly fine but my previous databases are not working now. So do above if you don't care it will delete all your previous databases in phpmyadmin.

分享给朋友:
您可能感兴趣的文章:
随机阅读: