I take it you are using REPAIR TABLE by hand.
I also take it your are doing an automatic table repair for MyISAM. (You have to remove or comment out the option of
my.cnf to disable automatic MyISAM table repair).
You can actually repair the table without using MySQL but mysqld cannot be accessing it. How?
You have to use the offline utility myisamchk
Suppose you have the following
- datadir is /var/lib/mysql
- database is
- table is
The table files would be
You can repair it with something like this
cp mytable.MY[ID] /tmp
myisamchk -r mytable.MYD mytable.MYI
mv mytable.MY[ID] ..
mv /tmp/mytable.MY[ID] .
Afterwards, you can either login to mysql and do this
mysql> flush tables;
or restart mysql
service mysql restart
Give it a Try !!!
UPDATE 2014-01-08 15:46 EST
Based on the last comment
Hi Rolando, It is an Linux OS Virtual Machine. 2 Intel Xeon Core 2048 Mbyte Memory. The tables are MyISAM. I will post the rest off the data in a sec (it's hard because it keeps crashing remember)
I would stronly recommend that you get more memory. Why ?
MyISAM caches index pages to the MyISAM key buffer. MyISAM does not cache data. The mysqld process defers all data caching to the OS. That can be a little dangerous for all open MyISAM tables in a low memory DB Server.
A MyISAM table keeps a count of the number of times a file handle has been open against it. When MySQL is down, a MyISAM table with a nonzero file handle count is considered crashed.
Although I provided the answer to the question in fixing a crashed a MyISAM table without mysqld running, you have a bigger problem with a 2GB VM. It should be more like 8GB. You should also run mysqltuner.pl against the VM by doing this:
# wget mysqltuner.pl
# perl mysqltuner.pl
You can then learn if /etc/my.cnf is underconfigured.