为什么即使列存在,我也有ORA-00904?

Vic*_*tor 28 oracle oracle10g ora-00904

我在执行hibernate sql查询时看到一个错误.

java.sql.SQLException:ORA-00904:"table_name"."column_name":无效的标识符

当我在sqldeveloper中打开表时,列就存在了.

错误仅发生在PROD中,而不是发生在DEV中.

我该怎么检查?

Jon*_*ler 27

这可能是一个区分大小写的问题.通常,表和列不区分大小写,但如果使用引号,则它们将是区分大小写的.例如:

create table bad_design("goodLuckSelectingThisColumn" number);
Run Code Online (Sandbox Code Playgroud)


vls*_*vls 7

ORA-00904如果执行用户对查询中涉及的对象没有适当的权限,Oracle将抛出.


joh*_*den 6

当我意外地使用相同的持久性数据库表定义了两个实体时,这发生在我身上.在其中一个表中,有问题的列确实存在,而另一个表中则没有.尝试持久化对象(指向错误的基础数据库表的类型)时,发生此错误.


小智 5

在双引号之间写入列名,如“columnName”。

如果错误消息显示的字符大小写与您所写的不同,则很可能是您的 sql 客户端为您执行了自动大小写转换。使用双引号绕过它。(这适用于 Squirrell Client 3.0)。