2016-01-26 7 views
3

Выполнение небольшого модульного процесса на Java. Однако, когда я называю заявления SQL с моего сайта система возвращается с ошибкой:Apache Derby - Синтаксическая ошибка: Encounted ";" в строке 8, колонка 2

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

Ниже представлены первые несколько строк файла SQL в вопросе, а также системы им, используя для извлечения данных.

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