gpt4 book ai didi

php - 更新MySQL表导致No Specified Definer错误

转载 作者:行者123 更新时间:2023-11-28 23:20:39 25 4
gpt4 key购买 nike

我有一个包含员工基本信息(即姓名、部门和职务)的表格。虽然我在此表中添加或删除没有问题,但更新却给我一个奇怪的错误。

这在我工作的测试环境和实际环境中都会发生。错误是“指定为定义者的用户 ('remote_admin'@'%') 不存在”。我不确定这个错误是什么意思,或者为什么只在表更新时发生。

我只是通过使用 SQL 更新表:

Update office_employee 
Set Title='Title Here'
Where id=117;

我在测试环境中使用的代码是这样的:

<? 
$db = new DbConnect(Config::dbhost, Config::dbuser, Config::dbpassword, "intranet", Config::error_reporting, Config::persistent);

if($db->open()) {
echo '<p>Successfully Connected</p>';

$sql = "Select * FROM office_employees";

$sql2 = "Update office_employees Set Title='Title Here' where id=117";

echo $sql2;
echo '<br />';
echo $sql;

$db->query($sql2) or die($db->error());

$results = mysql_query($sql);
echo '<br />';
echo $results;

while($row = mysql_fetch_array($results)) {
echo '<br />';
print_r($row);
echo '<br />';
}//*/

$db->close();

} else {
echo '<p>Unsuccessful in Connecting</p>';
}
?>

编辑

数据库只有一个用户,管理员。没有理由添加其他用户。此外,这过去工作得很好(根据同事的说法,我是相对较新的)所以为什么突然需要更改定义器是没有意义的。数据库也没有任何移动导致任何奇怪的错误。

最佳答案

发生错误是因为在表上定义了 BEFORE UPDATE 和/或 AFTER UPDATE 触发器。触发器定义包括 DEFINER;本质上,创建触发器的用户。

根据错误信息,我们知道触发器是用DEFINER 'remote_admin'@'%'定义的。


执行 UPDATE 语句时,触发 TRIGGER。并抛出错误,因为触发器定义引用了不存在的用户。

根据错误信息,我们知道'remote_admin'@'%' 用户没有在mysql.user 表中定义。

最可能的解释是用户已被删除。


这就是错误的含义,以及执行 UPDATE 语句时发生错误的原因。

关于php - 更新MySQL表导致No Specified Definer错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41768278/

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