Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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.sql.SQLSyntaxErrorException:ORA-00922:缺少或无效选项_Java_Database_Oracle_Jdbc_Ojdbc - Fatal编程技术网

java.sql.SQLSyntaxErrorException:ORA-00922:缺少或无效选项

java.sql.SQLSyntaxErrorException:ORA-00922:缺少或无效选项,java,database,oracle,jdbc,ojdbc,Java,Database,Oracle,Jdbc,Ojdbc,我正在使用JavaJDBC在OracleDB中创建一个新表,结果是缺少或无效选项。不知道这样的问题有什么不对 我曾尝试在sqlplus和sqldeveloper中运行相同的查询,它运行得很好,但在通过javajdbc运行时,它抛出了上述错误。这也是java代码的相同摘录。为此使用executeUpdate()方法 CREATE TABLE EventTable ( "EVENTID" NUMBER, "MODULE" NVARCHAR2(512),"EVENTTYPE" NVARCHAR

我正在使用JavaJDBC在OracleDB中创建一个新表,结果是缺少或无效选项。不知道这样的问题有什么不对

我曾尝试在sqlplus和sqldeveloper中运行相同的查询,它运行得很好,但在通过javajdbc运行时,它抛出了上述错误。这也是java代码的相同摘录。为此使用executeUpdate()方法

CREATE TABLE EventTable (
    "EVENTID" NUMBER, "MODULE" NVARCHAR2(512),"EVENTTYPE" NVARCHAR2(512),
    "MODULEANDEVENTTEXT" NVARCHAR2(512), "TIME" TIMESTAMP (6), "SOURCE" NVARCHAR2(512),
    "SEVERITY" NVARCHAR2(512), "NODE" NVARCHAR2(512), "ACKNOWLEDGED" NUMBER(*,0),
    "USERSID" NVARCHAR2(512), "DID" NVARCHAR2(512), "MID" NVARCHAR2(512), "FH" NVARCHAR2(512),
    "LD" NVARCHAR2(512), "TD" NVARCHAR2(512), "ED" NVARCHAR2(512), "UD" NVARCHAR2(512), 
    "GD" NVARCHAR2(512), PRIMARY KEY ("EVENTID")
); 
java.sql.SQLSyntaxErrorException:ORA-00922:缺少或无效选项

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:4875)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361)
Java代码片段

 countQuery.append(
                "CREATE GLOBAL TEMPORARY TABLE EventTable ( \"EVENTID\" NUMBER,  \"MODULE\" NVARCHAR2(512),\"EVENTTYPE\" NVARCHAR2(512), \"MODULEANDEVENTTEXT\" NVARCHAR2(512), \"TIME\" TIMESTAMP , \"SOURCE\" NVARCHAR2(512), \"SEVERITY\" NVARCHAR2(512), \"NODE\" NVARCHAR2(512), \"ACKNOWLEDGED\" NUMBER(*,0), \"USERSID\" NVARCHAR2(512), \"DESKTOPID\" NVARCHAR2(512), \"MACHINEID\" NVARCHAR2(512), \"FOLDERPATH\" NVARCHAR2(512), \"LUNID\" NVARCHAR2(512), \"THINAPPID\" NVARCHAR2(512), \"ENDPOINTID\" NVARCHAR2(512), \"USERDISKPATHID\" NVARCHAR2(512), \"GROUPID\" NVARCHAR2(512), PRIMARY KEY (\"EVENTID\")); "); 

PreparedStatement stmt = connection.prepareStatement(countQuery);

stmt.executeUpdate();

解决方案:

您需要使用
语句
对象并创建其实例来执行“创建
全局临时
表”查询 [
CreateStation
而不是
PrepareStation

原因:

全局临时
不是从连接运行的有效DDL。PreparedStation()

修复:

语句stmt=con.createStatement(); stmt.executeUpdate(countQuery)
解决方案:

您需要使用
语句
对象并创建其实例来执行“创建
全局临时
表”查询 [
CreateStation
而不是
PrepareStation

原因:

全局临时
不是从连接运行的有效DDL。PreparedStation()

修复:

语句stmt=con.createStatement(); stmt.executeUpdate(countQuery)
您能分享您编写的Java代码吗?根据,问题可能是您试图在此处设置的长度限制:
“时间”时间戳(6)
由于在日期或长数据类型上指定了最大长度,也会导致此错误。.使用代码段更新。@deHaar我尝试删除时间戳中的长度,但仍然相同error@punitjashra然后可能是每列缺少
NULL
notnull
。请参阅。甚至缺少
CONSTRAINT PK_事件uld是一个问题,您必须尝试这些选项以找出问题所在。您能否共享您编写的确切Java代码?根据,问题可能是您试图在此处设置的长度限制:
“TIME”时间戳(6)
由于在日期或长数据类型上指定了最大长度,也会导致此错误。.使用代码段更新。@deHaar我尝试删除时间戳中的长度,但仍然相同error@punitjashra然后可能是每列缺少
NULL
notnull
。请参阅。甚至缺少
CONSTRAINT PK_事件这可能是一个问题,你必须尝试这些选项才能找出问题所在。