(初心者として)私が見逃しているもう1つの小さな点は、2つのDBの間にバックアップスクリプトがあり、最後のステップとして、実際のDBを最適化してオーバーヘッドのサイズを減らす必要があります。1つのDBのみを使用する場合に機能するコードがありますが、2つ使用する必要があります。
$actconn = mysql_connect($dbhost, $actdbuser, $actdbpass) or die ('act Error connecting to mysql');
$bckconn = mysql_connect($dbhost, $bckdbuser, $bckdbpass) or die (' back Error connecting to mysql');
$ressql="SHOW TABLE STATUS FROM $actdbname WHERE Data_free / Data_length > 0.1 AND Data_free > 102400";
-これは、bckuserが無視されていることを示しているはずです...
$res = mysql_query( $ressql, $actconn);
echo mysql_error();
while($optrow = mysql_fetch_assoc($res)) {
mysql_query('OPTIMIZE TABLE ' . $optrow['Name'], $actconn);
}
actconn値:リソースID#1
bckconn値:リソースID#2
mysql_errorは言う:
SELECTコマンドがユーザー'bckuser'@'localhost' for table'actualtable'に対して拒否されました
私が何を間違えているのか分かりますか?
更新:actdbuserはそのDBのルートであるため、bckuserは何も実行しないでください。ただし、何らかの理由でSHOWTABLEが$actconnを認識しません...
UPDATE2:もう一度optを試しましたが、変更されたのは$ actdbname='db-name'だけです。作業中および$actdbname=' db-name
'仕様のアポストロフィを使用する場合。
これはsharedhostにあるため、DB名を変更できないことに注意してください。
@Corbinの興味深いアイデアに感謝します。試してみましたが、うまくいきませんでしたが、どうすればデバッグできますか?なんらかの理由で適切にデバッグすることすらできません...