【发布时间】:2011-09-14 05:18:28
【问题描述】:
我编写了一个 PHP 脚本,每天由 CRON 执行以清理文件并删除旧的数据库条目..
脚本运行没有问题,所以我知道这不是 CRON 问题。
问题是我收到以下错误:
警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: 语法错误或访问冲突:1142 SELECT 命令拒绝用户 'username'@'localhost' 访问表/cron_removeOld.php 中的“用户”35
我为后端管理员用户使用相同的数据库凭据,所以我知道他们有 SELECT 权限。我想知道它是否与在网络服务器之外运行的脚本有关?
任何帮助将不胜感激!
Cron:
20 0 * * * php -q /home/user/public_html/tssol/contract/admin/cron_removeOld.php
PHP(第 35 行):
$stmt = $dbh->prepare("SELECT idusers, contract FROM users WHERE contractExpireDate <= NOW()");
数据库凭据位于与其他页面共享的包含文件中,因此我知道这不是问题..如果您认为有帮助,将发布
【问题讨论】:
-
发布你的 cron 代码和 php 源代码
-
该查询没有问题。 必须是权限问题。
-
@Jonah,有什么想法吗??我整天都在这。缺点是我们在共享主机上,所以我没有对服务器的 root 访问权限
-
web服务器、db服务器和执行cronjob的服务器是同一台机器吗?
-
@Emil,我不知道。它是一个共享托管服务器,我不知道。把我们放在这个主机上的那个人正在联系托管公司,看看他们是否有任何意见。对于数据库连接中的主机,我尝试了 localhost,并将其设置为 127.0.0.1 以查看今晚会发生什么......
标签: php mysql cron mysql-error-1142