As far as I can tell from the docs, it's made on the fly. My tests indicated that as well. What I ment with restarting in my previous post was that I had to restart MySQL for the change in my.ini to take effect.
Automatic recovery is activated if you start mysqld with the --myisam-recover option. In this case, when the server opens a MyISAM table, it checks whether the table is marked as crashed or whether the open count variable for the table is not 0 and you are running the server with external locking disabled. If either of these conditions is true, the following happens:
* The server checks the table for errors.
* If the server finds an error, it tries to do a fast table repair (with sorting and without re-creating the data file).
* If the repair fails because of an error in the data file (for example, a duplicate-key error), the server tries again, this time re-creating the data file.
* If the repair still fails, the server tries once more with the old repair option method (write row by row without sorting). This method should be able to repair any type of error and has low disk space requirements.
If the recovery wouldn't be able to recover all rows from previously completed statementas and you didn't specify FORCE in the value of the --myisam-recover option, automatic repair aborts with an error message in the error log.
If the table is "really corrupt", rows may be lost. If you never want the repair function to remove rows, you shouldn't use the FORCE flag.