java 如何解决“ORA-00904:标识符插入语句”“无效[重复]

bq3bfh9z  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(148)
    • 此问题在此处已有答案**:

How To Handle Table Column Named With Reserved Sql Keyword?(4个答案)
19小时前关门了。
我尝试向我的用户表添加一列,但每次尝试创建新用户时都会收到错误消息,最终会收到错误消息"java. sql. SQLSyntaxErrorException:ORA-00904:"已导入":标识符""无效。在数据库中创建了我的列,但在尝试创建用户时仍收到错误。
我试图在用户表中创建一个接收true或false的列,当我试图通过jpa创建一个新用户时,我得到了一个错误
我的模型:

@Column(name = "IMPORTED")
@Enumerated(EnumType.STRING)
private Eboolean imported;

我的疑问:

alter table USER add IMPORTED VARCHAR2(1);
h22fl7wq

h22fl7wq1#

你说的不完全正确,表名肯定不是user

SQL> create table user (id number);
create table user (id number)
             *
ERROR at line 1:
ORA-00903: invalid table name

为什么?因为它是为返回当前登录用户的函数 * 保留 * 的:

SQL> select user from dual;

USER
--------------------------------------------------------------------------------
SCOTT

SQL>

因此,表名为 something else;或者,如果它 * 是 * user,那么您必须通过将它的名称括在双引号中来创建它,但是您必须每次都使用双引号,并且每次都匹配字母大小写:

SQL> create table "user" (id number);

Table created.

假设这就是你所拥有的,那么:

SQL> alter table "user" add imported varchar2(1);

Table altered.

SQL>

此外,您指定的错误为
ORA-00904:标识符无效
如果在表中插入一行时得到,则表示该表中没有该列,可能原因:

  • 你拼错了它的名字
  • 那里真的没有这样的专栏
  • 双引号和字母大小写匹配问题

假设列存在(参见上面的alter table),insert也起作用:

SQL> insert into "user" (id, imported) values (1, 0);

1 row created.

SQL> select * from "user";

        ID IMPORTED
---------- ----------
         1 0

SQL>

相关问题