相关疑难解决方法(0)

MySQL错误1449:指定为定义者的用户不存在

当我运行以下查询时,我收到一个错误:

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)

为什么我会收到这个错误?我如何解决它?

mysql permissions

320
推荐指数
15
解决办法
44万
查看次数

我何时应该将closeCursor()用于PDO语句?

PHP文档closeCursor()说它

释放与服务器的连接,以便可以发出其他SQL语句,但使语句处于允许再次执行的状态.

当我使用该命令时,如果它在我的查询语句之间是否存在似乎并不重要,我开始怀疑我是否需要它.

将它用于不返回数据的数据库调用与那些数据调用是否不同?

php pdo

31
推荐指数
1
解决办法
1万
查看次数

如何批量更改MySQL触发器DEFINER

我一直在研究我们的内部开发服务器并在我们的MySQL 5.6.13服务器上创建MySQL触发器.我现在遇到的问题是在内部服务器上使用as DEFINER = root@ 创建了触发器(总共大约200个)%.

现在我想转移到实时生产服务器.但是在我们的实时服务器上,我们不允许用户root访问.因此,我如何批量更改所有触发器,以便它读取DEFINER = root@localhost

mysql triggers

18
推荐指数
2
解决办法
2万
查看次数

PDO"Uncaught exception'PDOException'..当其他未缓冲的查询处于活动状态时,无法执行查询.考虑使用PDOStatement :: fetchAll()."

我知道这个问题已被多次询问,但我已经阅读了许多问题的答案,仍然无法理解为什么我收到此错误:

致命错误:带有消息'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)

php mysql pdo exception

7
推荐指数
1
解决办法
7351
查看次数

PDO :: query()遇到“在其他无缓冲查询处于活动状态时无法执行查询”。

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上。正如在许多线程中提到的那样,该错误至少可能是以下问题之一:

  1. 如此处所述,查询游标未关闭closeCursor()MySQL错误2014的原因其他未缓冲的查询处于活动状态时无法执行查询
  2. 有两个以上的查询,其中一个语句如此处所述:PDO在其他无缓冲查询处于活动状态时无法执行查询
  3. 此处提到的mysql驱动程序中的错误引起PDO错误的原因当其他无缓冲查询处于活动状态时,无法执行查询?

在我的情况下,上述所有操作均无济于事,直到我解决了问题才花了一些时间。这是我的代码(伪代码):

$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)

php mysql pdo unbuffered-queries

5
推荐指数
1
解决办法
3562
查看次数

Laravel-PDO准备语句-在其他无缓冲查询处于活动状态时无法执行查询

我在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属性来启用查询缓冲。

这是我的控制器的入口点,因此绝对不会运行任何先前的查询。

做什么?

谢谢

php mysql pdo laravel

5
推荐指数
1
解决办法
2653
查看次数

PDO-> bindParam,PDO-> bindValue和PDO-> closeCursor

到目前为止,我一直在使用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 mysql pdo bindvalue bindparam

1
推荐指数
1
解决办法
2140
查看次数

为什么 UPDATE 准备好的语句上的 PDO::fetchAll() 会导致“未缓冲的查询处于活动状态”异常?

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)

php mysql pdo

0
推荐指数
1
解决办法
67
查看次数