【实战分享】MySQL 备份遇到 Got error: 1356 报错?这几种解决方式了解一下!

项目中查询视图报错:View ‘uat.st_view‘ references invalid table(s) or column(s) or function(s) or defin 视图“uat.st_view”引用了无效的表或列或函数,或者视图的定义者/调用者没有使用它们的权限。3. 检查调用视图的用户是否有权限查看视图中使用到的表,如果没有权限可以使用grant赋权。2. 检查调用视图的用户是否有权限使用这个视图,如果没有权限可以使用grant赋权。如果不存在,可以修改视图创建语句,把定义者或调用者改为当前调用的用户。1.检查视图中查询sql的表或列是否存在,如果不存在创建表或列。4.检查定义或调用视图的用户是否存在。如果存在请跳到第2点。 阅读详情

在日常 MySQL 备份中,是否遇到过类似的报错信息?

mysqldump: Got error: 1356: View 'xxx.view_xxx' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when using LOCK TABLES

这正是我们今天要讨论的问题 —— mysqldump 在备份视图(View)时遇到 1356 错误。如果你也踩过这个坑,那么这篇文章你一定要看完。


📌 问题复现:Got error: 1356 是什么?

这个错误常出现在使用 mysqldump 导出数据库时,尤其是数据库中包含失效或异常的视图时。

报错示例:

mysqldump: Couldn't execute 'SHOW FIELDS FROM `view_person_jg`': 
View 'xxx.view_person_jg' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)

常见原因:

  • 视图引用的原始表已被删除或改名

  • 视图的定义者(definer)权限不足

  • 视图中使用了无效的函数或字段


✅ 解决方案汇总

方案一:忽略视图,仅备份表结构与数据

如果视图对你来说不是必须的核心数据,可以先跳过视图,仅备份表:

mysqldump -u root -p --all-databases --ignore-table=your_db.view_name > backup.sql

视图可以单独导出定义:

mysqldump -u root -p --no-data --routines --triggers --events your_db > backup_views.sql

👍 优点:减少 mysqldump 整体失败风险,备份流程更灵活。


方案二:使用 --force 选项跳过报错对象

mysqldump -u root -p --all-databases --force > backup.sql

✅ 强制忽略错误视图,让备份不中断,适合快速拉取全量数据的场景。


方案三:使用 mysqlpump 工具备份(MySQL 5.7+)

mysqlpump -u root -p --default-parallelism=2 --all-databases > backup.sql

🚀 优点:

  • 支持并行备份,更快

  • 可忽略部分报错对象

  • 功能更强大,推荐使用


🔍 进阶处理:备份前如何主动排查无效视图?

为了避免每次备份出错,我们可以提前通过脚本检测数据库中所有“已失效的视图”,避免踩坑。

步骤一:使用存储过程检测无效视图

以下是一个兼容 MySQL 8.0 的视图检测脚本,可以检测当前数据库中是否存在依赖已删除表的视图。

CALL check_invalid_views();

完整过程脚本见文末附录。

结果示例:

schema_nameview_nameerror_msg
your_dbview_person_jgTable 'your_db.test_table' doesn't exist

步骤二:处理这些无效视图

  • ✅ 视图不再使用 → 删除

DROP VIEW your_db.view_person_jg;
  • ✅ 表仍然有备份 → 还原表或重建视图

CREATE OR REPLACE VIEW your_db.view_person_jg AS
SELECT * FROM restored_table;

🧠 总结:哪种方案适合你?

方案场景命令
忽略视图、先备表视图不重要或单独处理--ignore-table
强制备份不中断忽略异常继续备份--force
并行+容错数据量大、视图较多mysqlpump
提前检测失效视图主动预防失败SQL + 存储过程

💬 最后

MySQL 中的视图是数据逻辑层的延伸,但在备份中却可能成为“坑”。

本篇文章结合实战和原理,为大家梳理了多种应对思路,希望你在处理 mysqldump 报错时不再一头雾水。

如果你在生产环境中遇到更复杂的视图依赖问题,也欢迎在评论区留言,一起交流更多实战技巧!


📎 附录:检测无效视图的存储过程

👇建议保存本段代码为 SQL 文件,部署到数据库中定期执行。

DELIMITER $$

DROP PROCEDURE IF EXISTS check_invalid_views$$
CREATE PROCEDURE check_invalid_views()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE v_schema VARCHAR(64);
  DECLARE v_view VARCHAR(64);
  DECLARE err_msg TEXT DEFAULT '';
  DECLARE error_occurred BOOL DEFAULT FALSE;

  DECLARE cur CURSOR FOR
    SELECT TABLE_SCHEMA, TABLE_NAME 
    FROM information_schema.VIEWS
    WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys');

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  DROP TEMPORARY TABLE IF EXISTS invalid_views;
  CREATE TEMPORARY TABLE invalid_views (
    schema_name VARCHAR(64),
    view_name VARCHAR(64),
    error_msg TEXT
  );

  OPEN cur;
  read_loop: LOOP
    FETCH cur INTO v_schema, v_view;
    IF done THEN
      LEAVE read_loop;
    END IF;

    SET @sql_text = CONCAT('SELECT 1 FROM `', v_schema, '`.`', v_view, '` LIMIT 1');
    SET error_occurred = FALSE;

    BEGIN
      DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error_occurred = TRUE;
      PREPARE stmt FROM @sql_text;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
    END;

    IF error_occurred THEN
      GET DIAGNOSTICS CONDITION 1 err_msg = MESSAGE_TEXT;
      INSERT INTO invalid_views(schema_name, view_name, error_msg)
      VALUES(v_schema, v_view, err_msg);
    END IF;

  END LOOP;
  CLOSE cur;

  SELECT * FROM invalid_views;
END$$

DELIMITER ;

免费备考资料分享(红帽、甲骨文、华为)

为了帮助更多考生高效备考,我根据自己的学习经验,整理了以下几个核心备考资料:

  1. 考试大纲:
    覆盖HCIE笔试和实验考试的所有重点知识,帮助你精准掌握考试范围,避免盲目学习。

  2. 培训教材:
    详细的理论知识和案例分析,核心技术的深入解析,是夯实基础的不二之选。

  3. 实验手册:
    实验考试配置命令速查手册和模拟实验案例集,涵盖关键场景,助你在实验环节高效应对。

获取方式:
如果你需要这些备考资料,可以在评论区留言或者私信我,我会将资料打包发给你,希望对你的备考有所帮助!

从零开始:手把手教你做转录组与代谢组的联合分析(含R代码) 本文详细介绍了转录组与代谢组联合分析的全流程,包括数据准备、预处理、差异分析及可视化方法,并提供了实用的R代码示例。通过多组学整合分析,研究者可以更全面地理解生物过程,适用于疾病机制和药物开发等医学研究领域。 阅读详情

相关推荐

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

MySQL查询视图View报错

项目场景: 在mysql客户端workbench中查询视图View报错。 问题描述 View references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them 原因分析: 执行查询之前没有选中数据库,或者没有use。 解决方案: 选中具体的数据库,或者use数据库,在查询就没问题了。 ...

代码君 1万+

内核工作FAST‘25 Artifact Evaluation流程记录

在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。我们在AE过程中使用。然后,把一切复现需要的代码环境,在chroot里面配置完成。

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 1214

MariaDB 无法修改用户数据问题

MariaDB View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

adinlead的博客 3259

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’

本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。

weixin_30566063的博客 502

Pipeline更多理解

Pipe 类型用途VIGVideo Image Generator:用于图层显示,支持 scaling、rotationRGB简单图层显示,较低优先级DMA主要用于 writeback / WFD / composition output,即从 framebuffer 输出到外部设备(或 memory)Cursor小图层,用于显示指针等很可能是:分别用于主屏、仪表、虚拟显示的输出路径或者用于不同的 display 去做 GPU_TARGET / writeback 的拷贝你看到的意思。

Damon_X的博客 1052

mysql报错ERROR 1356 (HY000): View ‘mysql.user‘ references invalid table(s) or column(s) or function(s)

命令时提示 “ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them”,表明在您的 MariaDB 版本中,‘user’ 表已经不存在,由于版本不同的MariaDB解决方案也不同。1.如果你的版本在10.4.4以上,你可以使用如下命令重置密码。

m0_48096446的博客 1万+

GDB交叉编译与问题解决:从零到精通的深度指南

完成后,GDB会安装到/usr/local/gdb-aarch64/bin,可以用aarch64-linux-gnu-gdb --version检查。:得有支持目标架构的交叉编译工具链,比如gcc-arm-none-eabi(用于ARM裸机)或aarch64-linux-gnu-gcc(用于ARM Linux)。:在配置工具链时,运行aarch64-linux-gnu-gcc --version检查版本,确保工具链没问题。这种场景下用GDB调试,就像在荒野求生,但别慌,GDB依然是你的好伙伴。

大模型大数据攻城狮的专栏 1万+

mysql备份报错mysqldump: Got error: 1356: View ‘wordpress.v_t1‘ references invalid table(s) or column(s)

mysql备份中遇到了如下错误: mysqldump: Got error: 1356: View ‘wordpress.v_t1’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when using LOCK TABLES 原因: 视图引用的表不存在。 原理:mysqldump在备份时要对表加读锁,加锁失败的时候。备份就终止了。 解决方法:

小渣渣 5545

微信小程序:errno: 1500104, errCode: 10008, errMsg: “writeBLECharacteristicValue:fail:system error, status

微信小程序errno: 1500104, errCode: 10008, errMsg: "writeBLECharacteristicValue:fail:system error, status: UNKNOWN (239)"微信小程序调用蓝牙API,wx.writeBLECharacteristicValue()报错,微信小程序蓝牙写入错误,在开发uniapp微信小程序蓝牙通信功能时报错,蓝牙开发设备控制核心api,微信小程序调用蓝牙API “wx.writeBLECharacteristicValu

✅ 精选推荐文章 3928

SAP FICO 内部往来对账功能开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO 内部往来对账功能开发说明书(包括开发源代码、测试样例、FS)

我好像病了的博客 1222

故障分析 | MySQL5.7 使用 mysqldump 重要闭坑事项

作者:王向爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。擅长数据库故障处理。对数据库技术和 python 有着浓厚的兴趣。本文来源:原创投稿 *爱...

杨建荣的学习笔记 1445

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 436

Mysql访问视图报错 ERROR 1356 (HY000)

ERROR 1356 (HY000): View 'sys.processlist' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

java_boss_的博客 2209

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Mysql|报错】ERROR 1356 (HY000): View ‘sys.host_summary‘ references invalid table(s) or column(s) ...

解决ERROR 1356 (HY000): View 'sys.host_summary' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

wei的博客 1413

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql proc表_mysql.proc表字段缺失导致的mysqldump报错(Got error:1356)

写在最前1356的错误,在前几天写的mysqldump问题集合里面已经写过了,然而本次按照常规的套路无法处理这次的1356错误,所以单独写出来1356以及相关mysqldump错误参阅这个问题集合:mysqldump问题处理集合IP架构问题数据库:172.17.100.106参考库:172.17.100.107、172.17.100.100106库是一个多次实验之后,做过主库也做过从库的数据库;1...

weixin_30769455的博客 937

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysqldump: Got error: 1356 mysqldump的重要参数--force

一个MySQL的备份突然变小了很多,但实际的数据量却一直在增长。备份脚本也没有调整过。为什么呢? 重现了一下备份过程,发现备份中遇到了如下错误: mysqldump: Got error: 1356: View 'wordpress.v_t1' references invalid table(s) or column(s) or function(s) or definer/invoker ...

weixin_30486037的博客 681

mysql数据库定时备份 ubuntu shell脚本

#!/bin/bash #保存备份个数,备份31天数据 number=31 #备份保存路径 backup_dir=/root/mysqlbackup #日期 dd=`date +%Y-%m-%d-%H-%M-%S` #备份工具 tool=mysqldump #用户名 username=root #密码 password=mima #将要备份的数据库 database_name=shujuku ...

wjy397的专栏 406

解决 MySQL 错误 1356 (HY000)

错误时,通常是由于 MariaDB 或 MySQL 版本更新导致的视图引用问题。更新 MariaDB 的 mysql.global_priv 表。对于 MariaDB 10.4.4 及以上版本,可以使用。对于 MariaDB 10.4.4 以下版本,可以使用。使用 SET PASSWORD FOR 命令重置密码。在 MariaDB 10.4 及以上版本中,使用 ALTER USER 命令重置密码。表已被替换为视图,实际数据存储在。命令来重置用户密码。命令来重置用户密码。

liweiweili126的博客 1164

mysqldump: Got error: 1356

mysqldump 备份遇到下述错误: mysqldump: Got error: 1356: View 'test.a_lookup' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when using LOCK TABLE

lwei_998的专栏 7911

mysql 1356_MySQL ERROR 1356 (HY000)

一、现象使用备份软件备份报错ERROR 1356 (HY000): View 'sys.host_summary' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them二、原因检查sys表是否损坏mysql> select if(is...

weixin_36154762的博客 1404

查看视图报错ERROR 1356 (HY000): View 'bdi_gj1121.y' references invalid table(s) or column(s) or function

问题说明: 业务说导入的新数据库有几个视图查不了,报错: mysql> select count(*) from bdi_gj1121.beaf_company;ERROR 1356 (HY000): View 'bdi_gj1121.beaf_company' references invalid table(s) or column(s) or function(s) or defi...

心向,往之 3万+

关于mysql出现1356错误

首先遇到这个情况是因为Navicat编辑连接时出现1698错误: 然后通过百度,发现是我数据库密码不对,接着去服务器上改mysql密码,接下来,然后根据一些博客操作,出现了错误: ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them 接下来是解决方案: 方法1: 用SE

Dragon_legend的博客 9581

mysql备份报错1356,解决mysqldump备份报错: Couldn't execute 'SHOW FIELDS FROM Unknown error 1356...

服务器环境:[root@localhostmysql]#cat/etc/redhat-releaseCentOSLinuxrelease7.3.1611(Core)[root@localhostmysql]#uname-aLinuxlocalhost.localdomain3.10.0-514.21.1.el7.x86_64#1SMPThuMay2517:04:...

weixin_29317963的博客 2119

mysql 1356_mysqldump: Got error: 1356 mysqldump的重要参数--force

一个MySQL的备份突然变小了很多,但实际的数据量却一直在增长。备份脚本也没有调整过。为什么呢?重现了一下备份过程,发现备份中遇到了如下错误:mysqldump: Got error: 1356: View 'wordpress.v_t1' references invalid table(s) or column(s) or function(s) or definer/invoker of v...

weixin_42527589的博客 873

mysqldump: Got error: 1356 解决方法

mysqldump: Got error: 1356: View 'yunwei.v_employee_superior' references invalid  table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when using LOCK TABLES

submorino的专栏 1万+
上一篇: 拿下HCIP云计算认证,我是如何抓住这波“云端”红利的?
下一篇: 一行密码背后的世界:深入理解 Linux 登录系统的原理与实现
IT程序媛-桃子
博客等级 码龄2年 757粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值