葬空吟 2023-05-31 16:23 采纳率: 61%
浏览 32
已结题

MySQL 1356错误应该怎么解决

MySQL报错 1356 - View '视图表名' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
情况描述:视图表可以正常使用,使用SQL语句where查询个别字段也可以正常查询,但是有的字段使用where查询时会报这个错误,想知道应该怎样解决

  • 写回答

4条回答 默认 最新

  • 断水流大撕兄 HarmonyOS创作领域新星创作者 2023-05-31 16:47
    关注

    这个错误表示视图定义引用了不存在或无权限访问的表、列或者函数。导致在查询视图时,部分字段能正常使用,部分字段查询报错。
    解决方法有:

    1. 授权缺失的表、列或函数的权限。可以查看视图定义,找出报错字段引用的表、列,然后授权使用权限。例如:
    GRANT SELECT ON 表名 TO 用户名; 
    GRANT SELECT(列名) ON 表名 TO 用户名;
    
    1. 修改视图定义,去除无效的表、列或函数引用。如果引用的表、列已经不存在,需要修改视图定义使其符合现状。
    CREATE OR REPLACE VIEW 视图名 AS
    SELECT 现有字段,... 
    FROM ...
    
    1. 重新创建视图。如果视图定义已经严重失效,无法修改,可以选择删除现视图后重新创建。
    DROP VIEW 视图名;
    CREATE VIEW 视图名 AS  
    SELECT ...
    FROM ... 
    
    1. 授权在视图定义和查询视图时使用的存储过程或函数的权限。如果是存储过程、函数缺失导致的权限问题,需要授权调用该对象的权限。
    GRANT EXECUTE ON 过程名 TO 用户名;
    

    ichever选项可以解决问题,视情况具体选择。如果在授权或修改视图定义时也报类似错误,可能涉及到对象删除或转移的问题,需要进一步检查数据库结构变化。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月20日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表