Понеже забелязах, че има доста питания за поправяне на повредена таблица в mysql база реших в тази публикация да напиша някои от начините които ползвам.
Обикновено когато таблицата е повредена излиза следното съобщение:
"… is marked as crashed and should be repaired …"
Първи начин:
myisamchk -r <DatabaseName>\*.MYI
Втори начин:
repair table powredena_tablica_w_mysql
Ето набързо написах един прост script които предлага repair, optimize и check на таблиците в mysql:
Поправяне на повредена mysql таблица,#!/bin/sh
#Mysql Table Fixer v 0.75 | Written by amri#Variables
MUSER=$2
MPASS=$3
DBNAME=$4Usage() {
echo "Usage: $0"
echo " --optimize mysqluser mysqlpass tablename"
echo " --repair mysqluser mysqlpass tablename"
echo " --check mysqluser mysqlpass tablename"
return
}repair_mysql_table()
{
TABLENAMES=`mysql -u$MUSER -p$MPASS -D $DBNAME -e "SHOW TABLES\G;"|grep 'Tables_in_'|sed -n 's/.*Tables_in_.*: \([_0-9A-Za-z]*\).*/\1/p'`
for TABLENAME in $TABLENAMES
do
mysql -u$MUSER -p$MPASS -D $DBNAME -e "$1 TABLE $TABLENAME;"
done
}if [ $# -eq 0 ] ; then
Usage
exit 1
ficase $1 in
--repair) repair_mysql_table "repair";;
--optimize) repair_mysql_table "optimize";;
--check) repair_mysql_table "check";;
--help) Usage; exit 1;;
*) Usage; exit 1;;
esac