【问题标题】:ORA-00942 on INSERT to a newly created tableORA-00942 插入新创建的表
【发布时间】:2015-10-06 05:39:50
【问题描述】:

我正在评估 FLYWAY 并运行一个非常简单的脚本来创建一个新表并向该表插入一行。表创建成功,但在 INSERT 上出现 ORA-942 错误。我已经尝试了所有我能想到的排列,使用大写/小写以及带引号和不带引号的模式和表名。我还尝试将 INSERT 语句与 CREATE 语句分离到不同的脚本中 - 一切都无济于事。任何人都可以帮助解释 INSERT 语句需要的格式吗?

这是我最近一次尝试的陈述。我已经尝试了在 table_name 周围使用引号的相同语句,全部小写,架构周围没有引号 - 没有任何作用。以 SYS 身份直接登录到数据库中,我可以使用以下命令描述表: desc "FLYWAY_USER".部门

CREATE TABLE "FLYWAY_USER".DEPARTMENT
   ( DEPARTMENT_id      NUMBER(3)         NOT NULL,
     DEPARTMENT         VARCHAR2(64)      NOT NULL,
     display_name       VARCHAR2(64)      NOT NULL,
     description        VARCHAR2(400),
     create_date        DATE              NOT NULL,
     update_date        DATE              NOT NULL,
     created_by         VARCHAR2(80)      NOT NULL,
     updated_by         VARCHAR2(80)      NOT NULL )
TABLESPACE users;

INSERT INTO "FLYWAY_USER".DEPARTMENT
    ( DEPARTMENT_id,
      DEPARTMENT,
      display_name,
      description,
      create_date,
      update_date,
      created_by,
     updated_by )
VALUES
    ( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  DEPARTMENT ),
         'HUMAN_RESOURCES',
         'Human Resources',
         'The best place to eat smores or get a raise.',
         Sysdate, 
         Sysdate,
        'AT09001',
        'AT09001' );

谢谢

【问题讨论】:

  • 如果您在问题中发布错误本身会很好......
  • 请编辑您的帖子以包含完整错误代码的准确引用,因为它通常包含除错误名称之外的更多有用信息。
  • 抱歉上面的格式 - 这是我的第一篇文章....这是错误:
  • 迁移 V1_5__Install_Test_Case_1.sql 失败 ------------------------- --------- SQL 状态:42000 错误代码:942 消息:ORA-00942:表或视图不存在位置:/home/weblogic/flyway/flyway-3.2/flyway-3.2.1/sql/ V1_5__Install_Test_Case_1.sql (/home/weblogic/flyway/flyway-3.2/flyway-3.2.1/sql/V1_5__Install_Test_Case_1.sql) Line : 42 Statement : INSERT INTO "FLYWAY_USER".DEPARTMENT
  • 我没有通过 flyway 登录到 SYS - 这是一个单独的数据库连接,只是为了显示对象存在。感谢所有快速 cmets....问题是子选择中对 DEPARTMENT 的引用。如果我完全确定脚本成功。

标签: oracle flyway


【解决方案1】:

以SYS身份直接登录数据库

最好使用专门的应用程序用户。

无论如何,如果您使用与对象的架构所有者 (FLYWAY_USER) 不同的用户,则您必须限定ALL您的引用。

特别是

VALUES
( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  DEPARTMENT ),

应该是

VALUES
( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  FLYWAY_USER.DEPARTMENT ),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2011-04-20
    • 2020-04-03
    • 2016-08-21
    相关资源
    最近更新 更多