Re: Error message with mysql

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Alex Dean
Date:  
To: plug-discuss
New-Topics: Tacky? (Was: Re: Error message with mysql)
Subject: Re: Error message with mysql
I hope it's not tacky to reply to my own post. :)

This is a script I run daily on our database... Seems to work quite well.

    // CHECK FOR CORRUPTED TABLES
    // get names of all tables
    $query = "SHOW TABLES";
    $result = mysql_query($query) or trigger_error("\nMySQL said:
    ".mysql_error(), E_USER_ERROR);
    $tableNames = array();
    while($row = mysql_fetch_array($result,MYSQL_NUM)) {
        $tableNames[] = $row[0];
    }


    // check all tables
    $query = "CHECK TABLE ".implode(',',$tableNames);
    $result = mysql_query($query) or trigger_error("\nMySQL said:
    ".mysql_error(), E_USER_ERROR);
    $messageArray = array();


    // if any tables are not 'OK', add to an array.
    while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        if($row['Msg_text'] != 'OK') {
            $messageArray[] = $row;
        }
    }


    if(count($messageArray) > 0) {
        $message = "MySQL Status Information :


    Table\t\tOp\t\tMsg_type\t\tMsg_text
    ";
        foreach($messageArray as $value) {
            $message .= implode("\t",$value)."\n";
        }


        mail('',"MySQL Table
    Maintainence",$message);
    }



Now that I look at it, I see this script isn't locking tables before
running the 'check tables' statement either, so maybe I was off-base in
my last post. Sorry, just trying to remember this stuff from a MySQL
training session I went to about a year ago. I run into corrupted
tables so rarely I'm foggy on the details. Still, hope this helps.

regards,
alex

Alex Dean wrote:

> There might not be anything wrong at all. I believe you may often get
> this error if clients are currently using the tables. That's the way
> it was with the older 'myisamchk' program (for MySQL 3.23.xx), because
> it worked directly on the data files rather than going through the
> database server. 'mysqlcheck' (for MySQL 4.0.x+), I think, does go
> through the server, but you still might get this error if you're not
> locking tables before doing the check.
>
> From the mysql client, you can try locking all the tables you want to
> check, querying 'CHECK TABLE tablename', then release your locks.
>
> Anyway... 'REPAIR TABLE tablename' is the way to go if you have this
> problem, but I bet it's probably nothing...
>
> Here's some table maintainence/recover info for 'myisamchk'.
> http://dev.mysql.com/doc/mysql/en/Table_maintenance.html I believe
> there are links there to other recovery topics related to mysql.
>
> regards,
> alex
>
> Brock wrote:
>
>> Look at the mysql docs for the "REPAIR TABLE tablenmae" query. There are
>> some other options you can give it to have it rebuild indexes and such.
>>
>> Sorry, link not handy.
>>
>> --Brock
>>
>> On 2004.10.21.08.59, Miles Beck wrote:
>> | | | WARNING: mysqlcheck has found corrupt tables
>> | | The table is listed and then this is displayed.
>> | | "warning: 13 clients are using or haven't closed the table properly"
>> | | This occurs for 19 tables in a database I have running.
>> | | How do tables get corrupted and what should I do to fix this?
>> | | Thanks
>> | | -------------------------------------------------
>> | FastQ Communications | Providing Innovative Internet Solutions
>> Since 1993
>> | | ---------------------------------------------------
>> | PLUG-discuss mailing list -
>> | To subscribe, unsubscribe, or to change you mail settings:
>> | http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>> ---------------------------------------------------
>> PLUG-discuss mailing list -
>> To subscribe, unsubscribe, or to change you mail settings:
>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>>
>>
>>
>
> ---------------------------------------------------
> PLUG-discuss mailing list -
> To subscribe, unsubscribe, or to change you mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>