Recently I was trying to automate some table repairs when a server crash is detected. My code attempted to repair a number of tables but after repairing the first table subsequent repairs failed with "Commands out of sync; you can't run this command now".
On investigation I realised I actually needed to read the response from the database much as if I had queried a table.
It appears four columns are returned from the repair statement reflecting the status of the repair.
Example code:-
sprintf(sql_statement,"repair table %s",tablename);
reportlog(sql_statement);
if (mysql_query (local, sql_statement) != 0) {
sprintf(message,"mysql select failed:\nError %u %s\n",mysql_errno(local), mysql_error(local));
reportlog(message);
}
res_set = mysql_store_result(local);
if (res_set != NULL) {
row = mysql_fetch_row (res_set);
if (row != NULL) {
sprintf(message,"%s %s %s %s",row[0],row[1],row[2],row[3]);
reportlog(message);
}
}
mysql_free_result(res_set);
Running the code results in :-
database.tablename repair status OK
Thursday, 7 February 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment