对于 MySQL(实际上是 MariaDB)中的某些触发器,我有一些错误的“定义器”。我认为纠正它们的最简单方法是以下版本:
use information_schema;
update triggers set definer=current_user() where trigger_schema='foobar';
它产生:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'
在同一个会话中,我可以使用“drop trigger”和“create trigger”删除并重新创建触发器,所以我不理解权限问题。我的用户是否需要一些它没有的特权?
您正在做的事情是不可能的,因为 INFORMATION_SCHEMA 数据库是由内存中只读临时表组成的数据库(请参阅我的帖子如何在 MySQL 中实现 INFORMATION_SCHEMA?)
您将不得不删除触发器并重新创建它们
我之前写过一个帖子(
Oct 02, 2011
:mysqldump可以转储触发器和程序吗?)这是您可以对
foo
数据库中的所有触发器执行的操作STEP 01 : mysqldump 触发器
为了澄清
STEP 02 : 创建一个脚本来删除所有触发器
STEP 03 : 验证每个文件的内容
STEP 04 : 编辑所有
foo_make_triggers.sql
你知道的定义器步骤 05:登录 mysql 并运行它
请在登台服务器上进行测试
试试看 !!!