[documentation] Draft (please comment): Can't open file: 'TABLE.MYI' (errno: 145)

Gary Feldman dpal_gaf_doc at marsdome.com
Tue Nov 7 17:47:43 UTC 2006


Anisa wrote:
> Please comment on the rough draft below.  I saw a post on this 
> recently in the forum, and thought it would be a nice candidate for 
> the Trouble shooting faq.
>
> ===================
>
> http://drupal.org/node/85866
>
> This is for errors like this:
>
> |user error: Can't open file: 'accesslog.MYI'. (errno: 145)
> query: INSERT INTO accesslog (title, path, url, hostname, uid, 
> timestamp) values('story', 'node/add/story', '.../node/add/story', 
> '000.0.000.000 <http://000.0.000.000>', 1, 1146151588) in 
> .../includes/database.mysql.inc on line 66.|
>
> errno: 145 is a MySQL error.
>
I think there needs to be some context around this.  How did the user 
get to this FAQ item?  Searching for "errno: 145"?  Or searching for 
"user error: Can't open file"?  The reason is that people are often 
intimidated by error messages, so some help in just reading this (as 
in:  If you see "(errno: nnn)", where "nnn" is some number, then this is 
a MySQL error).  But I don't think that sort of help belongs here.
>
> |MySQL error code 145: Table was marked as crashed and should be repaired|
>
> (source: http://drupal.org/node/60693)
>
> In this case, the affected table is |accesslog|.
>
I think there should be some more information, for people who know 
nothing about databases.  Something like "Databases store information in 
tables, which are kept in files.  Do you see 'accesslog.MYI' in the 
message? This file is used for the table named 'accesslog' (without the 
.MYI).  This is the table that has a problem.  Fortunately, MySQL has an 
operation to repair tables.  You can invoke it with phpmyadmin as 
follows:...


> *BACK UP YOUR TABLE!*
>
How?  (Presumably a link to instructions.)
>
> Possible solutions.
>
> 1) Please repair your table.
>
> In phpmyadmin:
> Select your database
> check the corrupted table
> scroll down and select the option "repair table".
>
> from mysql command line:
>
> |repair table tablename;|
>
> 2) Empty your table.
> Be sure you know what you are doing!
>
I don't think the second choice should be here.  Anyone who knows what 
they're doing won't need the FAQ for this question.

Gary




More information about the documentation mailing list