2016-01-26 3 views
3

Faire un petit processus modulaire en Java. Toutefois, lorsque j'appelle les instructions SQL de mon site Web le système revient avec l'erreur:Apache Derby - Erreur de syntaxe: rencontré ";" à la ligne 8, colonne 2

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

est Ci-dessous les premières lignes du fichier SQL en question ainsi que le système im en utilisant pour la récupération des données.

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

... 

Récupération Script:

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

Il n'a pas de sens quant à la façon d'une erreur de syntaxe peut être générée à partir d'un endroit où un point-virgule est censé être.

+2

* "Il n'a pas de sens quant à la façon d'une erreur de syntaxe peut être générée à partir d'un endroit où un point-virgule est supposé être. "* - Mais cela" fait "sens si le point-virgule n'est pas censé être là! –

+0

Essayez de poster l'énoncé de la requête – Abdelhak

+0

Si je publie la déclaration telle qu'elle est dans RazorSQL ou SQuirreL SQL cela fonctionne très bien. – Addramyr

Répondre

3

Oui, vous aurez besoin de diviser la chaîne en comptes individuels et exécutez chaque séparément:

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