0

テーブルを最適化するためのこの .sh スクリプトがあります

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/optimize.sql

...そしてoptimize.sqlのこのSQL

OPTIMIZE TABLE `this_table` 

これはすべてうまくいきます。

今、私はテーブルを切り捨てるために同じことをしています:

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/truncate.sql

...そしてtruncate.sqlのこのSQL

TRUNCATE TABLE `this_table`

...しかし、それは動作しません !なにが問題ですか?

PS私はCrontabを使用してx分ごとに.shを実行しましたが、これは最適化のためにのみ機能します

4

2 に答える 2

2

また、次のように、ファイルを使用して mysql 資格情報を保存することもできます。

nano .my.cnf

次のコンテンツを追加します。

[mysql]
user=your_user
password=the_super_secret_password

次に、次のようにシェル スクリプトで SQL ステートメントを実行します。

#!/bin/bash
`mysql --defaults-file=/path/to/.my.cnf -e "truncate table this_table;"`

資格情報を別のファイルに入れるのはなぜですか? パスワードを変更するときに、これらの資格情報を使用するすべてのシェル スクリプトを個別に更新する必要がないようにします。

于 2017-03-14T19:27:44.717 に答える
1

また、次のことができます

#!/bin/sh 
echo "truncate table this_table" | mysql -u'user' -p'pwd' -D'db'
于 2013-09-17T08:27:33.720 に答える