【问题标题】:java.sql.SQLSyntaxErrorException: ORA-00904: "columnName": invalid identifierjava.sql.SQLSyntaxErrorException: ORA-00904: "columnName": 标识符无效
【发布时间】:2021-05-16 04:28:23
【问题描述】:

当我打开 SQL 开发人员时,相同的列以完全相同的名称存在。 它发生在一些 UAT 和 prod DB 中,但在一些 UAT 数据库中工作。

请帮帮我

另外请说明以下异常的区别

  1. ORA-00904:“columnName”:标识符无效
  2. ORA-00904: "tableName"."columnName": 标识符无效

【问题讨论】:

    标签: java sql spring oracle spring-boot


    【解决方案1】:

    介意字母大小写。

    默认情况下,Oracle 中所有对象的名称都以大写形式存储,但您可以使用任何大小写来引用它们。例如:

    SQL> create table test (id number);
    
    Table created.
    
    SQL> insert into test (ID) values (1);
    
    1 row created.
    
    SQL> select iD from TeST;
    
            ID
    ----------
             1
    
    SQL> select ID from test;
    
            ID
    ----------
             1
    

    但是,如果你使用双引号和混合大小写,那么你必须使用双引号和完全相同的字母大小写,总是:

    SQL> create table "Test" ("iD" number);
    
    Table created.
    
    SQL> insert into test (id) values (1);
    insert into test (id) values (1)
                *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    
    
    SQL> insert into "Test" (ID) values (1);
    insert into "Test" (ID) values (1)
                        *
    ERROR at line 1:
    ORA-00904: "ID": invalid identifier
    
    
    SQL> insert into "Test" ("ID") values (1);
    insert into "Test" ("ID") values (1)
                        *
    ERROR at line 1:
    ORA-00904: "ID": invalid identifier
    
    
    SQL> insert into "Test" ("iD") values (1);
    
    1 row created.
    
    SQL>
    

    截至您发布的两个错误:它们是相同的。唯一的区别是 2nd 显示所有者(模式)名称以及列名称。请注意,它是NOT 数据库名称(正如“DB_Name”所暗示的那样);在 Oracle 中,数据库有所不同。如果您试图在 Oracle 和其他一些 DBMS 之间建立关系,那么什么是“数据库”那里是 Oracle 中的“用户”(或“模式”)。

    除此之外,没有区别。 ORA-00904 表示您正在引用该表中不存在的列。再说一遍:注意字母大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2022-01-22
      • 2011-08-27
      • 2011-04-21
      • 2019-06-29
      相关资源
      最近更新 更多