2016-01-26 59 views
3

在Java中进行小型模块化过程。然而,当我打电话的SQL语句从我的网站系统自带回来的错误:Apache Derby - 语法错误:遇到“;”在第8行第2列

java.sql.SQLSyntaxErrorException: Syntax error: Encountered ";" at line 8, column 2. 

下面是有问题的SQL文件,以及使用检索数据的系统IM的前几行。

SQL:

CREATE TABLE "chat_logs" 
(
    "logId" BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), 
    "logDate" INT DEFAULT NULL, 
    "logUser" BLOB, 
    "logMessage" BLOB, 
    PRIMARY KEY ("logId") 
); 

CREATE TABLE "configs" 
(
    "configId" BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), 
    "configType" BLOB, 
    "configSettings" BLOB, 
    PRIMARY KEY ("configId") 
); 

... 

检索脚本:

InputStream in = new URL("http://db.*******.com/derby/version1.00.sql").openStream(); 
return org.apache.commons.io.IOUtils.toString(in); 

它没有意义,因为如何能够从其中一个分号应该是一个地方产生一个语法错误。

+2

*“这没有任何意义,以如何从一个地方分号是生成语法错误应该是这样的。“* - 但是,如果分号不应该在那里,那么它确实是”有意义的! –

+0

尝试发布查询语句 – Abdelhak

+0

如果我发表声明,因为它是在RazorSQL或SQuirreL SQL,它工作正常。 – Addramyr

回答

3

是你需要分割字符串转换成单独的报表和单独运行每个:

String[] createTableStatements = allStatements.Split... 
for (String createStatement : createTableStatements) { 
    try (Statement ps = connection.createStatement()) { 
     ps.executeUpdate(createStatement); 
    } 
} 
相关问题