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

标签 php mysql

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

这在我工作的测试环境和实际环境中都会发生。错误是“指定为定义者的用户 ('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/

相关文章:

mysql - Laravel 中的 OrderByRaw() 然后 orderBy()

PHP -> SOAP -> Magento 网络服务 : get Cookies set by Magento

PHP 和 URL 重写

php - 如何以表格形式显示数据

mysql - Jenkins docker 上未知的 MySQL 服务器主机

php - 使用 PHP 查找两个不同 mysql 表中未链接的列

mysql - Shell脚本从文件中提取数据

php - 将 MD5 哈希表示为整数

php - $ .ajax错误将不会从php显示

php - AJAX jQuery PHP 返回值