我缺少的另一点(作为初学者)我在两个数据库之间有一个备份脚本,作为最后一步,我应该优化真实数据库以减少开销的大小。我有一个代码在我只使用一个数据库时有效,但我需要使用两个:
$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' 用于表 '实际表'
知道我做错了什么吗?
更新: bckuser 不应该对它做任何事情,因为 actdbuser 是该数据库的根目录,但由于某种原因 SHOW TABLE 无法识别 $actconn ...
UPDATE2:我再次尝试了 opt ,唯一改变的是 $actdbname='db-name'; db-name
使用规范撇号和 $actdbname=' ' 工作时;
请注意这是在共享主机上,所以我无法更改数据库名称。
感谢@Corbin 有趣的想法,我试过但没有用,但我该如何调试呢?由于某种原因,我什至无法正确调试它...