【问题标题】:ORA-00922 : Cannot Create table in oracle using ojdbcORA-00922: 无法使用 jdbc 在 oracle 中创建表
【发布时间】:2021-03-19 00:28:01
【问题描述】:

我要创建下表

CREATE TABLE EMPLOYEE (
    name_id varchar(255) PRIMARY KEY,
    modified_at TIMESTAMP,
    created_at TIMESTAMP
);

但是oracle给出了错误

ORA-00922:选项缺失或无效

我也尝试了以下 SQL 请求,但发生了同样的问题

CREATE TABLE EMPLOYEE (
    name_id varchar(255),
    modified_at TIMESTAMP,
    created_at TIMESTAMP,
    CONSTRAINT EMPLOYEE UNIQUE (name_id)
);

使用 java 代码和驱动程序 ojdbc6-11.2.0.4.jar 执行的请求

我的 sql 有什么问题吗?

【问题讨论】:

  • db<>fiddle 无法为您的第一个查询复制错误。我不确定你试图对第二个查询做什么,但约束不是有效的语法,因为你没有告诉它你试图创建什么类型的约束。
  • 你是对的,我编辑了第二个请求它有问题,但我想说的是这两个表对我的应用程序代表相同的东西,直接执行 sql 到 oracle 工作正常。但是使用 java 代码执行此操作会给我提到的错误
  • 你在通过JDBC运行语句时是否去掉了语句末尾的分号?
  • @MT0 不,我按原样使用它,我没有删除任何分号
  • 我已经更新了我的答案 - 你应该只需要删除结尾的分号。

标签: java oracle jdbc


【解决方案1】:
CREATE TABLE EMPLOYEE (
   name_id varchar(255) PRIMARY KEY,
   modified_at TIMESTAMP,
   created_at TIMESTAMP
);
CREATE TABLE EMPLOYEE (
  name_id varchar(255),
  modified_at TIMESTAMP,
  created_at TIMESTAMP,
  CONSTRAINT EMPLOYEE UNIQUE (name_id)
);

我的 sql 有什么问题吗?

不,它工作正常db<>fiddle

您可以更改的唯一两件事是:

  • 使用VARCHAR2 而不是VARCHAR
  • 将约束命名为与表名不同的名称。
CREATE TABLE EMPLOYEE (
    name_id     VARCHAR2(255),
    modified_at TIMESTAMP,
    created_at  TIMESTAMP,
    CONSTRAINT EMPLOYEE__name_id__u UNIQUE (name_id)
);

使用 java 代码和驱动程序 ojdbc6-11.2.0.4.jar 执行的请求

如果您通过 JDBC 运行语句,请删除末尾的分号。分号是 SQL/Plus(和 SQL 开发人员)中的语句终止符,但当您使用 JDBC 和类似的(当您只会传递单个语句时,分号是不必要的(并且是语法错误),因此终止符是不必要的)。

【讨论】:

  • 你说得对,去掉分号后就可以了,谢谢
  • 最终运行的 SQL 如下CREATE TABLE EMPLOYEE ( ID VARCHAR(255), LAST_MODIFIED TIMESTAMP, CREATED TIMESTAMP, PRIMARY KEY (ID) )
【解决方案2】:

您可以使用以下内容来代替内联 pk 声明:

CREATE TABLE EMPLOYEE (
   name_id varchar(255) PRIMARY KEY,
   modified_at TIMESTAMP,
   created_at TIMESTAMP
)
ALTER TABLE EMPLOYEE
ADD CONSTRAINT employee_pk PRIMARY KEY (name_id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多