Question

J'ai le problème suivant:

Lorsque j'essaie de charger le contenu d'un fichier dans mon modèle, il jette une exception, je ne sais pas pourquoi cela est lancé et il offre un énorme bloc de SQL avec des défaillances de la syntaxe. Quelqu'un pourrait-il m'aider avec ça?

J'ai vérifié la connexion JDBC, mais cela semble être correct. J'utilise 1.3.5 Jena SDB en combinaison avec la lecture 2.2.0.Le modèle doit ensuite être persisté à la base de données H2 avec mode="mysql" de jeu.

Le code qui jette l'exception:

ds = SDBFactory.connectDataset(store);
        Logger.debug("load default model");
        model = ds.getDefaultModel();
        Logger.debug("Loaded model");
        FileManager.get().readModel(
                model,
                new File(rdfFile.getParentFile().getCanonicalPath()
                        .concat("/dataversions/" + datasetName)
                        + ".txt").getCanonicalPath(), "N-TRIPLES");
        Logger.debug("Filemanager loaded file into model...");

et l'exception qui est lancée:

[debug] application - Create the new Dataset: test
[debug] application - load default model
[debug] application - Loaded model
[error] c.h.h.j.s.l.LoaderTuplesNodes - Error in thread: Problem making new tupleloader
com.hp.hpl.jena.sdb.SDBException: Problem making new tupleloader
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:292) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
        at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.lang.reflect.InvocationTargetException: null
        at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:288) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
Caused by: com.hp.hpl.jena.sdb.SDBException: Problem initialising loader for [Triples]
        at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.<init>(TupleLoaderBase.java:59) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashBase.<init>(TupleLoaderHashBase.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashMySQL.<init>(TupleLoaderHashMySQL.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
        at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
Caused by: org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; erwartet "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"
Syntax error in SQL statement "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; expected "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TEMPORARY TABLE NNodeTriples
(n0 BIGINT ,
n1 LONGTEXT BINARY CHARACTER SET utf8 ,
n2 VARCHAR(10) BINARY CHARACTER SET utf8 ,
n3 VARCHAR(200) BINARY CHARACTER SET utf8 ,
n4 INT
) ENGINE=MYISAM [42001-172]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2.jar:1.3.172]
        at org.h2.message.DbException.get(DbException.java:169) ~[h2.jar:1.3.172]
        at org.h2.message.DbException.getSyntaxError(DbException.java:194) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.getSyntaxError(Parser.java:491) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.read(Parser.java:2822) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.readIfMore(Parser.java:809) ~[h2.jar:1.3.172]
[error] c.h.h.j.s.l.LoaderTuplesNodes - Error in thread: Problem making new tupleloader
com.hp.hpl.jena.sdb.SDBException: Problem making new tupleloader
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:292) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
        at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.lang.reflect.InvocationTargetException: null
        at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:288) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:43) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:362) ~[jena-sdb-1.3.5.jar:1.3.5]
Caused by: com.hp.hpl.jena.sdb.SDBException: Problem initialising loader for [Triples]
        at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.<init>(TupleLoaderBase.java:59) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashBase.<init>(TupleLoaderHashBase.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
        at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashMySQL.<init>(TupleLoaderHashMySQL.java:29) ~[jena-sdb-1.3.5.jar:1.3.5]
        at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_45]
Caused by: org.h2.jdbc.JdbcSQLException: Syntax Fehler in SQL Befehl "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; erwartet "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"
Syntax error in SQL statement "CREATE TEMPORARY TABLE NNODETRIPLES
(N0 BIGINT ,
N1 LONGTEXT BINARY[*] CHARACTER SET UTF8 ,
N2 VARCHAR(10) BINARY CHARACTER SET UTF8 ,
N3 VARCHAR(200) BINARY CHARACTER SET UTF8 ,
N4 INT
) ENGINE=MYISAM "; expected "(, FOR, UNSIGNED, NOT, NULL, AS, DEFAULT, GENERATED, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFA
ULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TEMPORARY TABLE NNodeTriples
(n0 BIGINT ,
n1 LONGTEXT BINARY CHARACTER SET utf8 ,
n2 VARCHAR(10) BINARY CHARACTER SET utf8 ,
n3 VARCHAR(200) BINARY CHARACTER SET utf8 ,
n4 INT
) ENGINE=MYISAM [42001-172]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2.jar:1.3.172]
        at org.h2.message.DbException.get(DbException.java:169) ~[h2.jar:1.3.172]
        at org.h2.message.DbException.getSyntaxError(DbException.java:194) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.getSyntaxError(Parser.java:491) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.read(Parser.java:2822) ~[h2.jar:1.3.172]
        at org.h2.command.Parser.readIfMore(Parser.java:809) ~[h2.jar:1.3.172]

edit: Cette ligne de code doit être modifiée:

  StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.H2);

Était-ce utile?

La solution

H2 ne comprend pas la syntaxe MySQL E.G.GeneracoDiseTagCode.Chaque syntaxe SQL est différente.Vous devez dire à SDB, il utilise une base de données H2.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top