报错描述
在使用mysqldump时报错
image.png
mysqldump: Couldnt execute SHOW FIELDS FROM `$view_name`: View $db_name.$view_name references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
原因:
该view引用了无效的表,列,函数或者定义者。
处理思路:
可以根据报错信息,进入db,执行SHOW CREATE VIEW $view_name\G,查看该view的定义,逐一检查该view的基表,列,或相关函数与用户是否具有相关权限。考虑重建或删除视图。
来自于https://www.linuxidc.com/Linux/2018-01/150695.htm
在查看视图时报错
解决方案
1.建议使用show create view db,viewname将视图创建语句拷贝出来。然后drop掉,重新创建,这样登录的用户就对这个视图有权限了。注意需要评估一下业务是否正在使用该视图,否则重建过程中会对业务产生影响。
2.在mysqldump的备份命令最后加上-ignore-table=db1.view_t1,先不复制有问题的view,然后倒入的时候,手动创建。
网友评论