【问题标题】:Oracle Invalid identifier error after renaming a column name重命名列名后的Oracle无效标识符错误
【发布时间】:2016-03-31 11:16:19
【问题描述】:

我有一个表(我们称之为 MY_TABLE),其中有一列(我们称之为 COLUMN_A)。

我使用 spring Data 对该表执行 CRUD 操作。特别是,我使用org.springframework.data.repository.CrudRepository接口中的save方法将一些日志数据插入到该表中。

我的问题是,今天早上我注意到,在创建 MY_TABLE(使用 SQL 脚本)时,我打错了字并写了 COLUM_NA 而不是 COLUMN_A 作为列名。

所以我ALTERed 表以重命名该列,然后我在我的 Java 实体类 MyTableEntity 中重命名了列名,并将其也重命名为 getter/setter 方法。

从那时起,当我执行我的 Java 应用程序时,我遇到了这个 Oracle 错误:

ORA-00904: "MYTABLEENT0_"."COLUMN_A" : invalid identifier.

这就像他没有找到新的列名并且仍在使用旧的错误名称。但是不知道为什么,我到处都改了列名。

感谢您的帮助。

【问题讨论】:

  • 请向我们展示Java代码和ALTER声明。
  • RENAMEDEMO
  • @TimBiegeleisen ALTER TABLE MY_SCHEMA.MY_TABLE 将 COLUMN COLUM_NA 重命名为 COLUMN_A;
  • @VR46 我已经按我说的重命名了专栏,为什么还要重命名呢?
  • @Siho - 我给你看一个演示。重命名后,我可以使用新的列名。你检查了吗

标签: java sql oracle spring-data


【解决方案1】:

如果您仔细查看错误消息,您会注意到关于 column_name 的显示方式。

ORA-00904: "MYTABLEENT0_"." COLUMN_A " : invalid identifier.
                           ^         ^

那里有流氓空间。可能您的实际列称为COLUMN_A,没有空格。 Oracle 将双引号中的标识符视为文字。因此" COLUMN_A " != "COLUMN_A"

您可以通过编辑配置文件来解决此问题。

【讨论】:

  • 谢谢APC,但是我在写我的问题(出于保密考虑)时手动更改了列名,并且在这样做时我引入了空间却没有意识到。我编辑了我的问题。在真正的错误消息中,我刚刚检查过没有空格。不过谢谢你的提示
【解决方案2】:

好吧,伙计们,我很困惑。我刚刚意识到我在错误的数据库上执行了我的ALTER 请求(我有许多具有大致相同表的数据库)。

所以它在插入时仍然使用错误的名称是符合逻辑的,因为列名在那个(好)数据库中仍然是错误的。在 ALTERing 好数据库中的表之后,我的应用程序(尤其是我的 INSERT 请求)运行良好。

对不起,谢谢大家的回答和cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多