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))