问题
A very important database has gone corrupt that was sitting on server at a shared web host, and I didn't back up. The table contains a large list of very important email addresses. I can get a table listing, but if I open any of the tables with Navicat or phpMyAdmin, I get the following error:
Incorrect information in file: './the-table-name.frm'
I was able to get a hold of the .frm files associated with the database from the web host.
There is other data in there, but if I could at least get the email addresses, I would be alright.
How do I recover this database? I would be willing to pay somebody to fix this.
回答1:
This belongs on serverfault.
First, .FRM files contain none of your "data". They are simply the definition of the table.
If all of the following are true:
- The table is using the MyISAM storage engine
- You know the
CREATE TABLE
statement required to recreate the table
Then, do the following:
- Stop MySQL
- Backup your table_name.frm, table_name.MYI, table_name.MYD files
- Delete them from your mysql data directory (/var/lib/mysql usually)
- Start MySQL
- CREATE the table again
- Stop MySQL
- Copy the .MYD and .MYI files back into the datadir, replacing the ones there.
- Start MySQL
- ???
- Profit
回答2:
I had a similar issue, it turns out the MySQL InnoDB engine was turned off (I was able to check via phpMyAdmin, a bash pro could tell you how to do it other ways). in my case, it was a simple as restarting MySQL, but you may want to check your config if something changed there.
回答3:
You may try the following commands: CHECK TABLE tablename
If this gives "corrupt" message try:
REPAIR TABLE tablename
Actually these are didn't solve my similar problem but they may be useful for somebody.
来源:https://stackoverflow.com/questions/2314249/how-to-recover-a-mysql-database-incorrect-information-in-file-xxx-frm