2017-01-20 3 views
1

基本的な従業員情報(名前、部門、タイトルなど)を持つテーブルがあります。このテーブルを追加したり削除したりするのに問題はありませんが、更新すると私には奇妙なエラーが生じます。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>'; 
    } 
?> 

EDIT

データベース管理者は1人だけです。別のユーザーを追加する理由はありません。また、これはうまく動作する(同僚によると、私は比較的新しい)ので、なぜこれが突然定義者を変更する必要があるのか​​は分かりません。奇妙なエラーを引き起こすようなデータベースの動きもありませんでした。

+0

[MySQLエラー1449:定義者として指定されたユーザーが存在しません](http://stackoverflow.com/questions/10169960/mysql-error-1449-the-user-specified-as-a-)定義者は存在しません) – aynber

答えて

1

BEFORE UPDATEおよび/またはAFTER UPDATEトリガーがテーブルに定義されているため、エラーが発生しています。トリガーの定義にはDEFINERが含まれています。本質的に、トリガを作成したユーザ。

エラーメッセージに基づいて、トリガーがDEFINER 'remote_admin'@'%'で定義されていることがわかりました。


UPDATE文が実行されると、TRIGGERが起動されます。トリガー定義が存在しないユーザーを参照するため、エラーがスローされます。

エラーメッセージに基づいて、ユーザー'remote_admin'@'%'mysql.userテーブルに定義されていないことがわかりました。

これは、ユーザーが削除された可能性が高いと考えられます。


これは、エラーの意味、およびUPDATEステートメントの実行時に発生する原因です。

+0

ありがとうございました、データベースのすべてのトリガーをリストしました。更新トリガーがリストされており、定義者を見つけることができました。 – ebbBliss

関連する問題