2011-08-04 16 views
1

私は、毎日仮想マシン上でdebianを使ってmysqlデータベースをoptmizeするcronジョブを設定しようとしています。 mysqlcheckの:ガット・エラー:1045:私はこのエラーを得たすべてのmysqlデータベースを最適化して消去するCronjob

0 * * * * mysqlcheck -Aao –auto-repair -u root -p[password] > /dev/null 

まず私はこのようなmysqlcheckのを使用してみましたがアクセスが@パスワードを使用して( 'localhost' のユーザー 'ルート' のために拒否されました:YES )とき

を接続しようと、このエラーをグーグル後、私は同じ問題を経験していたデイブ・ストッダードCommentが見つかりました:

0 * * * * /usr/local/bin/mysqlcheck --defaults-file=/root/.my.cnf --all-databases --auto-repair 2>&1 | grep -v "OK" | mail -s "Database Problem" root 
上記から210

0 * * * * /usr/local/bin/mysqlcheck --defaults-file=/root/.my.cnf --all-databases --auto-repair 2>&1 | grep -v "OK" | mail -s "Database Problem" root

エラー:

/bin/sh: root: command not found 
/bin/sh: /usr/local/bin/mysqlcheck: No such file or directory 
+0

が、私はこのPHPスクリプトにアクセスするcronジョブを作成する方が良いだろう使用して

select TABLE_SCHEMA, TABLE_NAME from information_schema.tables where data_free>0; 

ビルドを最適化する必要があります://www.webdigity.com/index.php?action = tutorial; code = 16 –

答えて

5

真剣に、あなたは過やっかもしれませんが、
あなたのアプローチは、いくつかの不要なテーブルロックを引き起こします 、
それは簡単にテーブルがあまりにもある場合にのみ、最適化が必要とされているデータベース・アクセス

を必要なアプリケーションを凍結する意味 は、断片化 意味は、自由空間でどのようなインデックスキーとデータファイル

に影響を与える
最適化ができ、自由空間が含まれていますか? http:

このクエリは、テーブルのリストを返しますが、簡単なbashスクリプト

chk="select concat(TABLE_SCHEMA,'.', TABLE_NAME) from information_schema.tables where data_free>0;" 

for tbl in $(mysql -u root -pxxx -N <<< $chk) 
do 
    mysql -u xxx -pxxx -N <<< "optimize table $tbl" 
done 
0

2つのエラーはかなりはっきりしている...最初のものは、root @ localhostのは、データベースへのアクセスを許可されていないことを言う - あなたが使用しているいずれかの間違ったパスワード、またはMySQLのルートアカウント(通常はデフォルトで存在する)が削除されています。

異なるシステムでmailを使用するのが典型的なメールエラーです。標準のGNUメール(GNU mailutils 1.2から)には、メールコマンドにはないコマンドを実行する-Eオプションがあります。 man mailをチェックして、オプションの名前がシステムに異なるかどうかを確認してください。

+0

私はrootユーザーのパスワードが正しいことを再度確認しました.Daveからのコメントでこのエラーがなぜ発生するのか説明しています。 メールなしのテストを確認します-Eオプション –

+0

私は電子メールで受け取っている新しいエラーで質問を編集しました –

関連する問題