尝试通过控制台浏览类时出现OrientDB错误

时间:2014-05-23 12:47:21

标签: java database orientdb

我在Java的嵌入式环境中使用OrientDB。我正在我的应用程序中创建数据库和类并插入数据。当我通过控制台查看数据时,我可以看到数据库中的类,以及类中正确的行数。但是,当我尝试通过此命令browse class testData浏览类中的数据时,我收到以下错误

Error: com.orientechnologies.orient.core.exception.OSerializationException: Found invalid % character. Ensure it is opened and closed correctly.

我搜索了我的源数据,但它不包含任何%。我知道OrientDB对间距特别敏感,特别是像)这样的字符,但是我所拥有的数据也不会使用似乎有错误的字符。

有没有人遇到过这种错误?关于如何解决错误的任何想法?

创建数据库的代码

private void createNewOrientDatabase(){
    String dbPath = "plocal:./db/test";
    orientDatabase = new ODatabaseDocumentTx(dbPath).create();
}

创建课程的代码

 public void createClasses(Table t){
    if(orientDatabase.getMetadata().getSchema().getClass(t.getName()) == null) {
        orientDatabase.getMetadata().getSchema().createClass(t.getName());
    }
 }

插入数据的代码

public void insertData(Table table, TableSource data){
    for (String s : data){
        ODocument document = new ODocument(table.getName());
        String[] parts = s.split(",");
        for(int i = 0; i < table.getColumns().size(); ++i){
            document.field(table.getColumns().get(i).getName(),parts[i]);
        }
        document.save();
    }
}

有多个类但是对于给定类,数据可能看起来像这个43840,533,1,1,3,4,只是为了让您了解数据的外观。

一如既往,提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

找到错误的原因......

当我解析列名的源数据时,它们的格式为integer name;,我忘记从名称中删除;。因此,当我在文档中创建字段时,名称末尾有;,这在尝试浏览OrientDB控制台中的类时导致错误。