当我运行以下查询时,我收到一个错误:
SELECT
`a`.`sl_id` AS `sl_id`,
`a`.`quote_id` AS `quote_id`,
`a`.`sl_date` AS `sl_date`,
`a`.`sl_type` AS `sl_type`,
`a`.`sl_status` AS `sl_status`,
`b`.`client_id` AS `client_id`,
`b`.`business` AS `business`,
`b`.`affaire_type` AS `affaire_type`,
`b`.`quotation_date` AS `quotation_date`,
`b`.`total_sale_price_with_tax` AS `total_sale_price_with_tax`,
`b`.`STATUS` AS `status`,
`b`.`customer_name` AS `customer_name`
FROM `tbl_supplier_list` `a`
LEFT JOIN `view_quotes` `b`
ON (`b`.`quote_id` = `a`.`quote_id`)
LIMIT 0, 30
Run Code Online (Sandbox Code Playgroud)
错误消息是:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Run Code Online (Sandbox Code Playgroud)
为什么我会收到这个错误?我如何解决它?
释放与服务器的连接,以便可以发出其他SQL语句,但使语句处于允许再次执行的状态.
当我使用该命令时,如果它在我的查询语句之间是否存在似乎并不重要,我开始怀疑我是否需要它.
将它用于不返回数据的数据库调用与那些数据调用是否不同?
我一直在研究我们的内部开发服务器并在我们的MySQL 5.6.13服务器上创建MySQL触发器.我现在遇到的问题是在内部服务器上使用as DEFINER = root@ 创建了触发器(总共大约200个)%.
现在我想转移到实时生产服务器.但是在我们的实时服务器上,我们不允许用户root访问.因此,我如何批量更改所有触发器,以便它读取DEFINER = root@localhost
我知道这个问题已被多次询问,但我已经阅读了许多问题的答案,仍然无法理解为什么我收到此错误:
致命错误:带有消息'SQLSTATE [HY000]的未捕获异常'PDOException':常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询.考虑使用PDOStatement :: fetchAll().或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲.
第一件事很奇怪,就是我在我的localhost(wampserver)上没有出错,但我确实在我的网络服务器上得到了它.我的localhost上的php版本是5.3.10,而我的web服务器上的php版本是5.3.13.
我已经读过,当前一个查询中的数据留在缓冲区中时,此错误的来源正在进行查询.对我来说情况并非如此 - 我已经回复了所有数据,而且我知道查询中返回的每一行都被提取.
话虽如此,我发现更改我的一个查询fetchAll而不是fetch修复问题,但它只是没有,因为我知道返回的所有行都被读取.当我用fetchAll为查询(它在环正在取得),I打印出阵列中的每个循环,并且只有一个项目是阵列,用于在循环的每个查询英寸
还有一条信息.这不是我改变的查询fetchAll(这使得错误消失)抛出PDO错误,稍后在我的php文件中有另一个查询抛出错误.我的文件基本上是这样的:
... code ...
query 1
... code ...
loop
query 2
end loop
... code ...
query 3
Run Code Online (Sandbox Code Playgroud)
如果我注释掉查询3,则没有错误.如果我注释掉,或者更改为fetchAll查询2,则没有错误.查询1没有任何影响.
我还想补充一点,我已经尝试添加LIMIT 1到页面上的所有查询(同时),并且错误仍然存在.我认为这证明缓冲区中没有未读数据,对吧?
我真的很困惑,所以我很感激你的意见.在有人要求之前,我无法发布完整的代码,但这是我的代码的简化版本:
$stmt = $this->db->prepare('SELECT ... :par LIMIT 1');
makeQuery($stmt, array(':par' => $var));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt = $this->db->prepare('SELECT ... :par LIMIT 1');
for loop
makeQuery($stmt, array(':par' => $var));
$row2 = …Run Code Online (Sandbox Code Playgroud) Maybee还有其他一些人比我有同样的问题。我遇到了错误:
Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
在PDO上。正如在许多线程中提到的那样,该错误至少可能是以下问题之一:
closeCursor()。MySQL错误2014的原因其他未缓冲的查询处于活动状态时无法执行查询在我的情况下,上述所有操作均无济于事,直到我解决了问题才花了一些时间。这是我的代码(伪代码):
$stmt->startTransaction();
$stmt = db::getInstance()->prepare("CALL phones(:phone)");
$stmt->prepare('SELECT * FROM database');
$stmt->execute();
$aData = $stmt->fetchAll();
$stmt->closeCursor();
$stmt->query("USE sometable;");
Run Code Online (Sandbox Code Playgroud)
当我将其更改为:
$stmt->startTransaction();
$stmt = db::getInstance()->prepare("CALL phones(:phone)");
$stmt->prepare('SELECT * FROM database');
$stmt->execute();
$aData = $stmt->fetchAll();
$stmt->closeCursor();
$stmt->exec("USE sometable;"); …Run Code Online (Sandbox Code Playgroud) 我在Laravel中运行以下准备好的语句时遇到麻烦:
$pdo = DB::connection()->getPdo();
$ps_TempTable_PushCsv = $pdo->prepare(
"LOAD DATA LOCAL INFILE '123'
INTO TABLE `123`
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'"
);
$ps_TempTable_PushCsv->execute();
$ps_TempTable_PushCsv->closeCursor();
$rowCount = $ps_TempTable_PushCsv->rowCount();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[2017-06-08 03:41:35] local.ERROR:PDOException:SQLSTATE [HY000]:一般错误:2014在其他无缓冲查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。另外,如果您的代码只打算针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。
这是我的控制器的入口点,因此绝对不会运行任何先前的查询。
做什么?
谢谢
到目前为止,我一直在使用PDO->bindParam阅读手册,我PDO->bindValue从我可以告诉的PDO->bindValue传递值中找到PDO->bindParam通过引用传递,这是唯一的区别吗?
$modThread = db()->prepare("UPDATE `threads` SET `modtime` = UNIX_TIMESTAMP( ) WHERE `threadid` =:id LIMIT 1");
while(something)
{
$modThread->bindParam(':id', $thread);
$modThread->execute();
//*******************HERE********************//
}
Run Code Online (Sandbox Code Playgroud)
在阅读手册时我发现:PDO->closeCursor我应该把它放在标记的位置吗?它是可选的/自动调用的吗?似乎只有某些司机需要它.是否会在不需要/支持它的驱动程序上调用它会导致错误?MySQL怎么样?
PHP 版本:PHP 7.4.13
我遇到了这个问题,fetchAll()在一个准备好的语句上调用了一个UPDATE查询:
$stmt = $db->prepare( "UPDATE `table` SET value = value + ? WHERE id = ?" );
$success = $stmt->execute( $arguments );
$result = $stmt->fetchAll( PDO::FETCH_ASSOC ); // ? This causes the exception
Run Code Online (Sandbox Code Playgroud)
在研究MySQL error 2014 Cannot execute queries while other unbuffered queries are active异常的原因时,这里提出的其他问题似乎没有涵盖这种情况。
为什么会$stmt->fetchAll()在一个UPDATE查询原因下列异常情况发生?
PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider …Run Code Online (Sandbox Code Playgroud)