[Fix] MySQL is marked as crashed and should be repaired
MySQL is an open source RDBMS backed by Oracle. It supports all platforms, for example, UNIX, Windows, and Linux. It is mostly associated with web apps and online publishing, but it is not restricted to that, and can be used in a wide range of applications. Its working model is a client-based server.
The core of MySQL is MySQL server that handles all of the database commands. MySQL server is available as a separate program for use in a client-server networked environment. Though it is installed on one machine as a library that can be linked to separate applications, it is capable of sending data to multiple locations. It allows data to be stored on and accessed over multiple storage engines. To improve performance and durability, it also can replicate data. And you are not required to learn new commands for MYSQL; you can access the MySQL database by using standard SQL commands.
Crashed Tables in MySQL
While using MySQL, users may experience an error stating that “MySQL table is marked as crashed and should be repaired.” This error can appear at any time, especially after a forced shutdown of MySQL database or due to the crash of the entire server. While the error may seem daunting, it can be resolved. MySQL can repairing the crashed tables by itself. You would need to follow a few simple steps to make that happen.
Let’s discuss the possible reasons and MySQL repair methods for this error.
The cause behind the error
Low disk space could be a reason for MySQL table being marked as “crashed”. When you have low space on your disk, some of the tables in the database may get crashed. It usually happens when you get space issues on the part of the hard disk where your database is stored.
Often it gets difficult to identify the specific tables that are affected by the error. Before starting the repair process, thus, let us quickly take a look at how to identify the corrupted MySQL tables.
Identifying crashed MySQL tables
You can identify corrupted tables through certain expected and observable errors in the queries, for example:
- Can’t find file tbl_name.MYI (Errcode: nnn)
- Unexpected end of file
- Got error from table handler
- Record file is crashed
- Can’t find file tablethatshouldbethere.MYI
- tablethatwasworking.frm is locked against change
- Got error ### from table handler.
You can run perror to get more information about the error
Recovering MySQL Crashed Tables
MySQL server provides its own tool to diagnose crashed tables. This tool is known as myisamchk, and you can use it as shown below:
# myisamchk -s /var/lib/mysql/*/*.MYI
Running this command will list the crashed MySQL tables, with a message as follows:
MyISAM-table '/var/lib/mysql/dbname/table_name.MYI' is marked as crashed and should be repaired
Other than diagnosis, the tool can also help you repair the damaged table. In most cases, the problem is solved by running the myisamchk command. But if it doesn’t solve the problem, try stopping your web service, so that no new requests are generated, stop the MySQLd daemon itself and run the below-given command:
# myisamchk -r --update-state /var/lib/mysql/dbname/table_name.MYI
The “–update-state” switch tells MySQL to mark the indicated table as “checked.” Once this has been done, restart your MySQLd and web service, and MySQL will repair the crashed table. As a result, the error will be removed, and your database will be safely restored.
Recovering database by using backup
Another way to deal with ‘MySQL table is marked as crashed and should be repaired’ error is to recover your database from a previously saved backup.
Having a solid backup strategy for your data is essential. It helps you recover the data when everything else goes wrong. Instead of searching the methods for repairing MySQL crashed tables, you can restore data instantly from a backup, and that will surely save your time. That’s why your database, install directory, and home directories should be backed up and tested regularly by using database administration or any backup tool of your choice.
Software tool for MySQL Database Repair
Stellar Repair for MySQL is a powerful and convenient tool for MySQL database repair, which can save time while doing the repair more effectively. So, it can be your default first choice.
Alternatively, you can use the software as a complementary solution to fill in for the manual method- if it doesn’t work, or if you don’t have the backup to restore your database.
It is available for a free trial download so that you can test it out for repairing your MySQL database files. The software recovers all the objects including keys, views, triggers, tables, etc., in their original format. It can repair InnoDB and MyISAM tables and allows us to save the MySQL repair database in various formats like MySQL, CSV, HTML, and XLS.
MySQL is one of the most trusted relational database management systems. But if you need to write queries in MySQL repair table or recover tables, you need to have deep technical knowledge about it. You cannot play around with MySQL without knowing the roots of it since that will increase the chances of you losing the data permanently.
So, if you don’t have hands-on proficiency on MySQL, a safer option is to recover the corrupt database by using the backup. Next, you can use the built-in myisamchk utilityfor the database repair.
A safer, convenient, and more effective MySQL database repair solution is offered by Stellar Repair for MySQL. It’s available for the free trial which offers to scan and preview the database so that you can ascertain the capabilities really well.
Great, the information seems to me work well, I will try it now.
I migrate my database from PostgreSQL to MySQL it seems data get corrupted. Will this solution work in this situation?
Yes, You can use Stellar Repair for MySQL.
I used the in-built utility so many times but no benefits. Finally, I tried Stellar Repair for MySQL and yes its really works. Thanks, guys for such a great utility.
Hey Elias, Thanks for such nice words. We are happy to see our customers happy.
In my case, I fixed this problem manually using the command:
REPAIR TABLE “;
But, the above command is not returning any outcome. HELP!