Php 使用模型getDBConnection时PDO类中可能存在的不一致性

Php 使用模型getDBConnection时PDO类中可能存在的不一致性,php,mysql,pdo,phalcon,Php,Mysql,Pdo,Phalcon,我的cli应用程序任务中有以下代码(类似于主应用程序中的控制器行为)。然而,我发现有时当我执行这段代码时,我会得到如下错误。这表明SQL语句中出现了错误。然而,当我检查和测试时,即使它给我一个错误db更新是成功的。所以我想知道这个问题背后的根本原因是什么 要执行的代码是 public function updateUserCountsAction(){ try{ $phql="UPDATE `user` u JOIN (

我的cli应用程序任务中有以下代码(类似于主应用程序中的控制器行为)。然而,我发现有时当我执行这段代码时,我会得到如下错误。这表明SQL语句中出现了错误。然而,当我检查和测试时,即使它给我一个错误db更新是成功的。所以我想知道这个问题背后的根本原因是什么

要执行的代码是

public function updateUserCountsAction(){
try{
           $phql="UPDATE `user` u JOIN
                       (
                        SELECT COUNT(`user_to`) AS fav_count, user_to
                        FROM `users_favorite`
                        GROUP BY `user_to`
                       ) uf
                  ON uf.user_to = u.user_id
                  SET u.fav_count = uf.fav_count;";
            $user = new User();
            $rs = new Phalcon\Mvc\Model\Resultset\Simple(null, $user, $user->getReadConnection()->query($phql));
        }
        catch(\Exception $e){
            $this->error($e);
        }
}
这是我有时得到的错误,大约50%的时间。我想知道为什么?但是SQL的执行似乎会更新数据库,即使我得到了这个错误

========================================
2016-02-11 18:40:42:
PDOException: SQLSTATE[HY000]: General error
 File=/var/www/vhosts/example.com/httpdocs/apps/cliend/tasks/CronTask.php
 Line=240
#0 [internal function]: PDOStatement->fetchAll()
#1 [internal function]: Phalcon\Db\Result\Pdo->fetchAll()
#2 [internal function]: Phalcon\Mvc\Model\Resultset->__construct(Object(Phalcon\Db\Result\Pdo), NULL)
#3 /var/www/vhosts/example.com/httpdocs/apps/cliend/tasks/CronTask.php(240): Phalcon\Mvc\Model\Resultset\Simple->__construct(NULL, Object(LXY\Models\User), Object(Phalcon\Db\Result\Pdo))
#4 [internal function]: CronTask->updateUserCountsAction()
#5 [internal function]: Phalcon\Dispatcher->dispatch()
#6 /var/www/vhosts/example.com/httpdocs/apps/cliend/console.php(94): Phalcon\Cli\Console->handle(Array)
#7 {main}

我会责怪您的mysql配置只有50%的错误率,但首先,请尽量不要使用Resultset。更新查询不返回值(,):

在实际尝试写入数据库时,也要使用
getWriteConnection()

如果两者都没有帮助,请检查您的mysql\u nd配置。在矿井群集中配置死机时,发现正确执行脚本时出现
HY000
错误

$user = new User();
$rs = $user->getWriteConnection()->query($phql);