我在使用 mysqldump 将数据导入我的 Amazon RDS for MySQL 数据库实例时如何解决 definer 错误?
上次更新时间:2020 年 5 月 29 日
我在使用 mysqldump 尝试将数据导入 Amazon Relational Database Service (Amazon RDS) for MySQL 数据库实例时,收到类似如下的错误:
Definer error: example: /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER customer_update AFTER UPDATE ON `customer` FOR EACH ROW
简短描述
当 MySQL 尝试以数据库用户的身份创建对象,而该数据库用户在目标数据库中并不存在时,将会触发定义者错误。MySQL 尝试为 localhost 创建用户时您也可能会收到类似的错误消息,Amazon RDS 不允许执行此操作。这是因为 Amazon RDS 没有超级用户权限。
解决方法
可以采用多种方式解决 definer 错误:
1. 删除以下 definer 行:
/*!50017 DEFINER=`root`@`localhost`*/
该行的内容现在如下所示:
/*!50003 CREATE*/ /*!50003 TRIGGER customer_update AFTER UPDATE ON `customer` FOR EACH ROW
2. 将 definer 用户 root和 localhost分别重命名为 mas