精华内容
下载资源
问答
  • 视图创建提示表不存在
    千次阅读
    2017-06-27 09:33:24

    之前搭环境时候很顺利的就创建了,这次要移植项目到其他框架,移植过来就报了这个错,网上查阅了很多资料。发现启动时activiti会进行判断,通过执行isTablePresent("ACT_RU_EXECTION")

    而结果为ture,则没有创建,然后就抛了异常。

    之前的配置文件

    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    		<!-- 数据源 -->
    		<property name="dataSource" ref="dataSource" />
    		<!-- 配置事务管理器,统一事务 -->
    		<property name="transactionManager" ref="txManager"/>
    		<!-- 设置建表策略,如果没有表,自动创建表 -->
    		<property name="databaseSchemaUpdate" value="true" />
    		
    	</bean>

    然后就在其中加了

    <property name="databaseSchema" value="ACTIVITI"></property>

    就好了

    更多相关内容
  • 要仅创建不存在视图,可以使用以下语法-CREATEORREPLACEVIEWyourViewNameASSELECT*FROMyourTableName;为了理解上述语法,让我们创建一个创建表的查询如下-mysql>createtablecreateViewDemo->(->...

    要仅创建尚不存在的视图,可以使用以下语法-CREATE OR REPLACE VIEW yourViewName AS SELECT *FROM yourTableName;

    为了理解上述语法,让我们创建一个表。

    创建表的查询如下-mysql> create table createViewDemo

    -> (

    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

    -> Name varchar(20)

    -> );

    使用insert命令在表中插入一些记录。

    查询如下-mysql> insert into createViewDemo(Name) values('John');

    mysql> insert into createViewDemo(Name) values('Carol');

    mysql> insert into createViewDemo(Name) values('Bob');

    mysql> insert into createViewDemo(Name) values('Sam');

    使用select语句显示表中的所有记录。

    查询如下-mysql> select *from createViewDemo;

    这是输出-+----+-------+

    | Id | Name  |

    +----+-------+

    | 1  | John  |

    | 2  | Carol |

    | 3  | Bob   |

    | 4  | Sam   |

    +----+-------+

    4 rows in set (0.00 sec)

    这是仅在视图不存在时创建视图的查询-mysql> CREATE OR REPLACE VIEW New_ViewDemo AS select *from createViewDemo;

    让我们检查视图记录。

    查询如下-mysql> select *from New_ViewDemo;

    以下是输出-+----+-------+

    | Id | Name  |

    +----+-------+

    | 1  | John  |

    | 2  | Carol |

    | 3  | Bob   |

    | 4  | Sam   |

    +----+-------+

    4 rows in set (0.02 sec)

    展开全文
  • ORA-00942: 视图不存在

    千次阅读 2021-12-10 15:42:32
    ORA-00942: 视图不存在!!但是将存储过程中的sql拿出来单独执行时,sql语句能正常执行。其实到这里就能想到,单独的sql可以执行表明语句本身是正确,而存储过程中无法执行,应该是权限出了问题。通过查看该用户...

      今天一个开发同事私信我,说是在创建存储过程中提示😱ORA-00942: 表或视图不存在!!但是将存储过程中的sql拿出来单独执行时,sql语句能正常执行。其实到这里就能想到,单独的sql可以执行表明语句本身是正确,而存储过程中无法执行,应该是权限出了问题。通过查看该用户角色与权限,发现该用户拥有dba角色,但是在对象权限中没有访问该表的权限,在执行grant select on tablename to username后,创建存储过程正常。
      很多人会疑惑为什么出现这种情况呢?用户都拥有了DBA角色了,单独的sql也能执行,存储过程为什么不可以?下面我将通过实验过程来解释这其中的原因👇

    1. 创建测试表

    [oracle@jwdb:/home/oracle]$ sqlplus / as sysdba
    create tablespace eason datafile '/oradata/orcl/eason.dbf' size 10m autoextend on;
    create user hyj identified by hyj default tablespace eason ;
    grant connect,resource to hyj;
    
    create user fym identified by fym default tablespace eason ;
    grant dba to fym;
    
    
    [oracle@jwdb:/home/oracle]$ sqlplus hyj/hyj
    create table students(
    id int,
    name varchar(20)
    );
    
    hyj@ORCL> INSERT ALL INTO students values(3,'张三')
    INTO students values (4,'李四')
    INTO students values (5,'王五')
    INTO students values (6,'赵六')
    INTO students values (7,'孙七')
    select 1 from dual;    
    
    5 rows created.
    
    Elapsed: 00:00:00.09
    hyj@ORCL> select * from students;
    
    	ID NAME
    ----- -----------
    	 3 张三
    	 4 李四
    	 5 王五
    	 6 赵六
    	 7 孙七
    

    2.创建存储过程

    • 确认用户的角色和权限
    system@ORCL> select grantee,granted_role,default_role,admin_option from dba_role_privs  where grantee ='FYM';
    
    GRANTEE 		       GRANTED_ROLE		      DEF ADM
    ------------------------------ ------------------------------ --- ---
    FYM			       DBA			      YES NO
    #fym用户拥有的对象权限
    sysem@ORCL> select privilege,table_name,grantee from dba_tab_privs where grantee='FYM';
    
    no rows selected
    
    Elapsed: 00:00:00.07
    
    • 创建PROCEDURE
    fym@ORCL> CREATE OR REPLACE PROCEDURE TEST_update01
          as v_sql varchar2(2000) := '';
           BEGIN
                 v_sql := 'update hyj.students set id=id+1';
                 EXECUTE IMMEDIATE v_sql;
           END ;
      /
      2    3    4    5    6    7  
    Procedure created.
    
    • 执行存储过程
    fym@ORCL> 
     BEGIN
         TEST_UPDATE01;
     END;
     /fym@ORCL>   2    3    4  
     BEGIN
    *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    ORA-06512: at "FYM.TEST_UPDATE01", line 5
    ORA-06512: at line 2
    
    
    • 单独执行存储过程中的sql
    fym@ORCL> update hyj.students set id=id+1;
    
    5 rows updated.
    
    Elapsed: 00:00:00.00
    fym@ORCL> select * from hyj.students;
    
    	ID NAME
    ---------- ------------------------------------------
    	 4 张三
    	 5 李四
    	 6 王五
    	 7 赵六
    	 8 孙七
    

    💥可以看到这里将procedure中的sql部分单独取出执行,可以再fym用户下正常执行,在procedure中缺报错❌ORA-00942: table or view does not exist❌
    ✏️下面我们在创建一个存储过程,观察一下有什么不同之处

    3.创建存储过程(调用者权限)

    fym@ORCL> CREATE OR REPLACE PROCEDURE TEST_update02 AUTHID CURRENT_USER 
          as v_sql varchar2(2000) := '';
           BEGIN
                 v_sql := 'update hyj.students set id=id+1';
                 EXECUTE IMMEDIATE v_sql;
           END ;
      /
      2    3    4    5    6    7  
    Procedure created.
    
    Elapsed: 00:00:00.12
    
    fym@ORCL>  BEGIN
         TEST_UPDATE02;
     END;
     /  2    3    4  
    
    PL/SQL procedure successfully completed.
    
    Elapsed: 00:00:00.01
    
    fym@ORCL> select * from hyj.students;
    
    	ID NAME
    ---------- --------------------------------------------------------------------------------
    	 5 张三
    	 6 李四
    	 7 王五
    	 8 赵六
    	 9 孙七
    

    ⁉️为什么同样内容的存储过程,FYM用户现在就能执行成功了呢?
    🚩这里我们创建存储过程时,使用了AUTHID CURRENT_USER模式

    Oracle 从8i开始引入了调用者权限体系结构,之前一直使用定义者权限体系结构(默认情况下是定义者权限)。下面描述了调用者权限与定义者权限之间的差异

    1 执行的schema不同,操作的对象也不同
    在定义者(definer)权限下,执行的用户操作的schema为定义者,所操作的对象是定义者在编译时指定的对象。
    在调用者(invoker)权限下,执行的用户操作的schema为当前用户,所操作的对象是当前模式下的对象。

    2、执行的权限不同
    在定义者(definer)权限下,当前用户的权限为角色无效情况下所拥有的权限。
    在调用者(invoker)权限下,当前用户的权限为当前所拥有的权限(含角色)。
    3、执行的效率不同
    在定义者(definer)权限下,过程被静态编译静态执行(相对而言),所执行sql语句在共享区池中是可被共享使用的
    在调用者(invoker)权限下,过程静态编译,但动态执行,虽然执行的语句相同,但不同用户执行,其sql语句在共享池中并不能共享

    ✅ 知道了原理,我们就知道如何解决问题啦

    sys@ORCL> grant update on hyj.students to fym;
    Grant succeeded.
    Elapsed: 00:00:00.02
    
    fym@ORCL> BEGIN
         TEST_UPDATE01;
     END;
     /  2    3    4  
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.01
    
    fym@ORCL 01:13:08> select * from hyj.students;
    
    	ID NAME
    ---------- --------------------------------------------------------------------------------
    	 6 张三
    	 7 李四
    	 8 王五
    	 9 赵六
    	10 孙七
    

    🎯现在创建的存储过程(默认定义者模式)可以正常执行

    展开全文
  • oracle触发器报错视图不存在

    千次阅读 2021-05-13 09:41:06
    2.问题原因:功能主的所属用户并没有对另外一个用户中的的权限,所以导致编译和使用的时候报错,提示表视图不存在,实际上是有这个用户和这个的。 3.解决方法 授权 grand all on 用户.功能主 to 用户; 4....

    1.问题场景:某个功能主表有个别的用户下的触发器,在保存的时候触发了触发器,但是触发器报错,所以根据事务导致保存失败。

    2.问题原因:功能主表的所属用户并没有对另外一个用户中的表的权限,所以导致编译和使用的时候报错,提示表或视图不存在,实际上是有这个用户和这个表的。

    3.解决方法
    授权
    grand all on 用户.功能主表 to 用户;

    4.其他授权
    授权a用户的表、序列、视图的所有权限给b用户

    -- 授权表权限(all、update、select、insert、delete)
    select  'grant all on a.' ||table_name|| ' to b;'   from user_tables;
    
    -- 授权序列(all、update、select、insert、delete)
    select  'grant ALL on a.'  || sequence_name ||  ' to b;'  from dba_sequences where sequence_owner= 'a';
    
    -- 授权视图(all、update、select、insert、delete)
    SELECT * FROM user_views;
    select  'grant all on a.'  || view_name ||  ' to b;'  from user_views;
    
    展开全文
  • 创建了同义词,直接查询都是正常的,但存储过程中一调用就报“”视图不存在“”, 因为&quot;在存储过程中访问公共同义词,必须直接对用户授权,而能通过角色授权&quot;。 见 ...
  • select * from v$instance; 提示ORA-00942: 视图不存在
  • ORA-00942: 视图不存在解决方法

    万次阅读 2021-05-12 16:00:43
    1、视图确实不存在或名称写错 2、表名大小写 Oracle对大小写敏感,通常在创建和查询时对名称数据库会自动转为大写,但语句中有引号时会按引号中的内容保留。例如: create table "TableName" ( "col1" ...
  • 通过dblink连接查看远端表提示表视图不存在1. A库: user1用户下有source_table user1_interface用户下创建user1下source_table的同义词 create synonym user1_interface.source_table_synoynm for user1....
  • 1、问题产生的原因Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的...如果加上了"",那么我们采用一般的SQL语句查询则会产生“ORA-00942: 视图不存在 ”,因此SQL脚本中需要将表名也加上""。例如:select*...
  • Oracle空间不存在问题

    千次阅读 2021-05-04 10:45:35
    一、问题引出 相信大家对如上报错应该陌生(ORA-00959:空间XXX不存在)。二、问题分析问题原因:涉及到源库(导出库)中的、索引、LOB字段的空间在目的库(导入库)中不存在的问题。解决思路:所以该问题正确解决...
  • 测试环境数据库有一张Comment,当我写sql语句往里面插入一条数据时,报错(忘了什么错误,好像是触发器没执行成功),查看了下触发器的sql语句,发现确实报错:视图不存在。 Solution 网上搜了下,得知...
  • 使用shardingjdbc分库分表方式访问oracle数据库时,出现ORA-00942: 视图不存在,原因是shardingjdbc按分库分表规则路由的物理的确不存在
  • 在Navicat新建了UserDetail,但是查询时提示视图不存在“,并且无论使用sqlplus还是PL SQL Developer均提示视图不存在“。   解决方案: 经过查询了解到,外部工具在创建Oracle时会默认添加...
  • Oracle:"ORA-00942: 视图不存在

    千次阅读 2020-04-14 09:52:17
    开始是看懂得,一直以为是jar包替换的不对,后来发现是数据创建的问题。 我们都知道Oracle是区分大小写的。举个小例子。 建表方式一: create table account ( userID VARCHAR2(50) not null, username N...
  • 这个问题以前我也遇到过,方法也就是先drop掉(表名要用”“)...究其原因 因为创建表的时候偷懒用Navicat自动生成的语句创建的 默认带了引号 所以表名实际上是有引号的如“tablename” 所以查询的时候 select * from
  • navicat 创建,或试图不存在

    千次阅读 2018-07-18 17:03:53
    今天使用navicat 创建了一个,打算测试用,结果创建之后使用jdbc 进行查询的时候总是说或试图不存在. 语句如下"select * from user"; 这样写就会报表或试图不存在的错误,可是表明明是存在的. 有的...
  • 问题描述:在用户fm下创建视图fm_view,在fm_view里面用到了am用户下的text,即类似如下语句:select * from am.text,结果fm_view 视图报错:am.text不存在 解决办法:经过检查am.text确实存在,考虑到应该是...
  • Mysql之视图创建、修改、查看、删除
  • 今天遇到一个问题,自己写了一个很简单的存储过程,编译的时候,报错: 视图不存在;  但是:确实是存在,单独拿出来查询,一点问题也没有。  经过几番查找,找到了问题所在: 查询的权限不够; 解决...
  • 由于DM数据库中,dual伪在SYSTEM库的SYSDBA模式下,非SYSDBA用户访问时需要带上库名和模式名来访问, 如果需要直接访问可以用SYSDBA创建一个PUBLIC同义词: CREATE PUBLIC SYNONYM dual for SYSTEM.SYSDBA.SYSDUAL...
  • MySQL数据库视图视图定义、创建视图、修改视图

    万次阅读 多人点赞 2017-03-20 11:54:15
    视图不直接存储数据,不知真正的。 关系型数据库中的数据是由一张一张的二维关系所组成,简单的单查询只需要遍历一个,而复杂的多查询需要将多个连接起来进行查询任务。对于复杂的查询事件,每次查询...
  • 问题:使用USER1等其他用户登录Oracle以后,创建视图提示“权限不够”,怎么解决?这是因为USER1这个帐户目前没有创建视图的权限。解决方法为:首先使用system帐户进行登录然后执行:grant create any view toUSER1...
  • Oracle视图不存在

    千次阅读 2020-01-10 10:48:20
    今天用Navicat查询语句时,提示表视图不存在,仔细看了下查询用到的都是存在的,怎么会提示不存在呢。编辑连接看了一下,我要查询的是在我自己建的空间下,但是连接的是默认的SYSTEM这个用户,这个用户下面...
  • 遇到问题:连接数据库查看payment数据时报错已经被损坏了,然后我就打算删除后再重新创建,结果提示存在的,如下: 但查看该数据库时确实没有这个。 解决思路:innodb引擎建payment时在Data中...
  • 使用 SQL 语句创建 Oracle 时抛出如下异常: 可以使用以下语句来查询(注意:大小写敏感): select * from all_objects where object_name='对象名'; 一般是因为创建 Oracle SQL 语句中,表名使用了...
  • 视图存在不存在,数据库里面我创建了呀,咋报这个错呢? 2.解决方案 经过了一番的排查,找到了原因,如下, 红色部分,多了一个空格,删掉就行了,因为是直接双击,复制步骤名称的表名的,可能默认多了空格...
  • ora-00942: 视图不存在 解决方法

    千次阅读 2016-03-28 14:24:09
    使用navicat 创建存储过程时,编译成功后,执行总是提示 ora-00942: 视图不存在,但视图一直是刚刚建好的,明明存在,试了刷新,重启,都管用。 后来发现存储过程名称加了双引号,于是想到是不是大小写问题,...
  • 1、使用DBeaver数据库工具在oracle数据库下创建了一张tb_user,使用查询报“视图不存在” 2、导致此报错原因是oracle数据库是区分大小的数据库,因此,在写SQL语句是,tb_user会转化,此时,想要查询到的...
  • Oracle 程序中提示视图不存在

    千次阅读 2019-11-29 16:20:28
    Oracle 提示视图不存在的几种可能 1.视图的确不存在: 所查询的视图创建或未创建成功 所查询的视图与代码所写的视图未对应 另外一个坑:在PL/SQL中执行正确,在代码中提示此错误,原因...
  • mysql的视图不存在的问题

    千次阅读 2018-02-01 16:10:14
    数据库显示不存在视图,在网上查找了很多答案,有的说是因为用户权限问题,但是我的用户权限是所有都可以操作。总之网上的答案都要需要自己去揣摩,都能解决我的问题。主要原因是被数据库的报错给混淆了思路,往...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,149
精华内容 42,459
热门标签
关键字:

视图创建提示表不存在