Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-00922:无法使用ojdbc在oracle中创建表_Java_Oracle_Jdbc - Fatal编程技术网

Java ORA-00922:无法使用ojdbc在oracle中创建表

Java ORA-00922:无法使用ojdbc在oracle中创建表,java,oracle,jdbc,Java,Oracle,Jdbc,我想创建下表 CREATE TABLE EMPLOYEE ( name_id varchar(255) PRIMARY KEY, modified_at TIMESTAMP, created_at TIMESTAMP ); 但甲骨文给出了错误 ORA-00922:缺少或无效选项 我还尝试了以下SQL请求,但同样的问题也发生了 CREATE TABLE EMPLOYEE ( name_id varchar(255), modified_at TIMESTA

我想创建下表

CREATE TABLE EMPLOYEE (
    name_id varchar(255) PRIMARY KEY,
    modified_at TIMESTAMP,
    created_at TIMESTAMP
);
但甲骨文给出了错误

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有什么问题吗

createtableemployee(
name_id varchar(255)主键,
在时间戳处修改了_,
在时间戳处创建
);
createtableemployee(
name_id varchar(255),
在时间戳处修改了_,
在时间戳处创建了_,
约束员工唯一性(名称\u id)
);
我的sql有什么问题吗

不,它很好用

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

  • 使用
    VARCHAR2
    而不是
    VARCHAR
  • 将约束命名为与表名称不同的名称
createtableemployee(
name_id VARCHAR2(255),
在时间戳处修改了_,
在时间戳处创建了_,
约束员工名称id唯一(名称id)
);
使用java代码和驱动程序ojdbc6-11.2.0.4.jar执行的请求


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

可以使用类似于以下内容的语句来代替内联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);

无法复制第一个查询的错误。我不确定您试图对第二个查询执行什么操作,但约束的语法无效,因为您没有告诉它您试图创建的约束类型。您是对的,我编辑了第二个请求,它有问题,但我想说的是,这两个表对我的应用程序表示相同的内容,直接向oracle执行sql很好。但是,使用java代码会出现上述错误您是否在通过JDBC运行语句时从语句末尾删除了分号?@MT0否我按原样使用它,我没有删除任何分号。我已更新了我的答案-您应该只需要删除后面的分号。您是对的,删除分号后,它就可以工作了,感谢工作的最后一个SQL是下面的
创建表EMPLOYEE(ID VARCHAR(255),上次修改的时间戳,创建的时间戳,主键(ID))