gpt4 book ai didi

php - 使用模型 getDBConnection 时 PDO 类中的 Phalcon 可能不一致

转载 作者:行者123 更新时间:2023-11-29 06:16:58 24 4
gpt4 key购买 nike

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

要执行的代码是

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_nd 配置只有 50% 的错误率,但首先,尽量不要使用 Resultset。更新查询不返回值(12):

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

一旦您实际尝试写入数据库,也可以使用 getWriteConnection()

如果两者都没有帮助,请检查您的 mysql_nd 配置。在我的集群中配置了死奴隶时,正确执行脚本时发现 HY000 错误。

关于php - 使用模型 getDBConnection 时 PDO 类中的 Phalcon 可能不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com