Re: MySQL 4.0 (sarge) --> MySQL 5.0 (etch) -- Please do "REPAIR TABLE"
04-06-07, Jarek Buczyński <jaro80@gmail.com> napisał(a):
> #!/bin/bash
> PASSWD=TWOJEHASLO
> for i in `mysql -u root -p$PASSWD -e 'show databases'`
> do
> echo $i >> databases.idx
> echo "dodalem baze $i do indeksu baz "
> done
> for c in `cat databases.idx`
> do
> for d in `mysql -u root -p$PASSWD -D $c -e 'show tables'`
> do
> mysql -u root -p$PASSWD -D $c -e "repair table $d"
> done
> done
>
> kilka linijek a naprawi wszystko
Dzięki to już prawie działa tylko że listuje zbyt dużo "baz", w cudzysłowu
bo dodaje też nazwę tabelki z bazami "Database" i baze "information_schema",
można się pozbyć jakoś tych dwóch wpisów.
W sumie już to rozwiązałem przez edycję pliku i podział skryptu na dwa :),
ale może jest na to sposób w jednym skrypcie :)
w sumie zaden to blad... ale:
najprosciej przefiltrować plik poleceniem... hmm... , najbardziej po
chamsku to ztailować ilosc linii minus jeden
#!/bin/bash
PASSWD=TWOJEHASLO
for i in `mysql -u root -p$PASSWD -e 'show databases'`
do
echo $i >> databases.idx.pre
ilosclinii_all=`cat databases.idx.pre | wc -l`
ilosc_linii_naglowka=1
ilosclinii_minus_X=`expr $ilosclinii_all - $ilosc_linii_naglowka`
tail -$ilosclinii_minus_X databases.idx.pre > databases.idx.final
echo "dodalem baze $i do indeksu baz "
done
for c in `cat databases.idx.final`
do
for d in `mysql -u root -p$PASSWD -D $c -e 'show tables'`
do
mysql -u root -p$PASSWD -D $c -e "repair table $d"
done
done
pewnie tak zadziala aczkolwiek nie mam czasu przetestowac ;)
Pojawia się jeszcze problem z tabelami InnoDB:
--------------------------------------------------------
The storage engine for the table doesn't support repair
--------------------------------------------------------
Czy ten problem nie dotyczy InnoDB czy trzeba coś innego zrobić?
google
pzdr.
--
Wojciech Ziniewicz
Unix SEX :{look;gawk;find;sed;talk;grep;touch;finger;find;fl
ex;unzip;head;tail; mount;workbone;fsck;yes;gasp;fsck;more;yes;yes;eje
ct;umount;makeclean; zip;split;done;exit:xargs!!;)}
Reply to: