当前位置: 首页 > 知识库问答 >
问题:

语句无法执行,请重试:Oracle.kv.FaultException:表(12.1.4.3.11)(18.3.10)中没有这样的对象

方嘉志
2023-03-14

我试图存储的数据是来自存储在JSON文件中的tweet的元数据,但为了简单起见,我准备了一个带有更基本示例的演示。在这个演示中,我将尝试创建并填充一个只有4个字段的表和一个非常简单的JSON文件,其中包含要存储的数据。代码如下:

private static void demo(KVStore kvstore, String file2load) {
    //Creating the table
    String query = "CREATE TABLE Carros (plate STRING, brand STRING, owner STRING, km NUMBER, primary key (plate))";
    try {
        kvstore.executeSync(query);
    } catch (IllegalArgumentException e) {
        System.out.println("Invalid statement:\n" + e.getMessage());
    } catch (FaultException e) { //ATENTION HERE <-
        System.out.println("Statement couldn't be executed, please retry: " + e);
    }
    System.out.println("Table created");
    //Fill up the table
    populateTable(kvstore, file2load);
    System.exit(0);
}

上面看到的是在main中调用的方法。现在,我还将populateTable()方法留在下面,尽管它工作得很好:

private static void populateTable(KVStore kvstore, String file2load) {
    TableAPI tableH = kvstore.getTableAPI();
    Table myTable = tableH.getTable("Carros");

    BufferedReader br = null;
    FileReader fr = null;

    try {
        String jObj = "";
        String currLine;
        int tCount = 0;
        boolean buildObj = false;
        boolean beganParsing = false;

        fr = new FileReader(file2load);
        br = new BufferedReader(fr);

        while ((currLine = br.readLine()) != null) {
            tCount += countParens(currLine, '{'); 

            if ((currLine = br.readLine()) == "\n") {
                continue;
            }

            if (tCount > 0) {
                buildObj = true;
                beganParsing = true;
            }
            //Anadimos la linea leida
            if (buildObj) {
                jObj += currLine;
            }

            tCount -= countParens(currLine, '}');
            if (tCount < 1)
                buildObj = false;


            if (beganParsing && !buildObj) {
                Row row = myTable.createRowFromJson(jObj, false);
                tableH.put(row, null, null);
                jObj = "";
            }
        }//While

    } catch (FileNotFoundException fnfe) {
        System.out.println("File not found: " + fnfe);
        System.exit(-1);
    } catch (IOException ioe) {
        System.out.println("IOException: " + ioe);
        System.exit(-1);
    } finally {
        try {
            if (br != null)
                br.close();
            if (fr != null)
                fr.close();
        } catch (IOException iox) {
            System.out.println("IOException on close: " + iox);
        }
    }
}//populateTable

所以我这里的问题是,每次我执行这个程序,它到达执行结束时都没有问题,因为我使用了try-catch块,但是,它不创建也不填充任何表。我得到的信息是:

execute "CREATE TABLE ....."

因为这也行不通。有什么想法吗?提前谢谢你。

共有1个答案

柳均
2023-03-14

当在try块中引入查询变量声明时,这个问题得到了解决;换句话说:

private static void demo(KVStore kvstore, String file2load) {
//Creating the table
String query;
try {
query = "CREATE TABLE Carros (plate STRING, brand STRING, owner STRING, km NUMBER, primary key (plate))";
    kvstore.executeSync(query);
} catch (IllegalArgumentException e) {
    System.out.println("Invalid statement:\n" + e.getMessage());
} catch (FaultException e) { //ATENTION HERE <-
    System.out.println("Statement couldn't be executed, please retry: " + e);
}
System.out.println("Table created");
//Fill up the table
populateTable(kvstore, file2load);
System.exit(0);
}

但是,如果执行以下命令:

执行“从Carros中选择*”

 类似资料:
  • 问题内容: 我一直在做倒计时计划,我想到了这个。 在while循环的最后,没有内部的print / println语句,倒计时代码将不会执行。怎么会?该程序可以很好地与print语句一起工作。 问题答案: 首先,您的程序是 线程不安全的, 因为它是一个 共享变量 ,但是在同步块中既不访问也不访问。 现在,偶然地是一种同步方法,并且在任何实际架构上,使用 内存屏障 CPU指令来实现进入和退出同步块,

  • 问题内容: 我在Hibernate尝试了简单的程序,并发现了一堆异常。 我不知道到底是什么问题。 我有三个课程-书籍,阅读器和使用。最后一个是将前两个绑定为一对多。 这是我的: 这是异常消息: 的摘要: DB上的所有表均已创建,但为空。一切都还好。有什么建议么? 如何解决这个麻烦? 问题答案: 在MySQL中, USING 是保留字。 因此,只需使用实体上的注释来重命名表即可。就像是 我假设您有一

  • 我得到以下错误,当我尝试添加一个应用程序和应用程序设置。以下是详细的错误消息: 下面是junit测试 这是保存应用程序和设置的方法 这些是DAO类。 这是应用刀 为什么我会得到上面的错误?如果你们需要更多的信息,请告诉我。 更新

  • 问题内容: 我有一个测试用例: 我想在其他测试用例中使用它: 这引起了: 我看了调用异常的单元测试代码,看起来测试不应该以这种方式编写。有没有一种标准的方法可以编写您想要测试的东西,以便以后的测试可以重用?还是有解决方法? 作为一种可疑的解决方法,我现在添加了一个空方法。 问题答案: 确实具有深层的魔力- 如果您选择使用它来运行单元测试(我愿意,因为这样,我可以在工作场所中使用集成到构建系统中的非

  • 问题内容: 我在代码中有很多地方可以处理Alamofire请求/响应。 由于某些间歇性问题(最常见的是不稳定的网络),每个请求都可能失败。 我希望能够在重试前重试请求3次。 直接的方法是拥有类似的东西 但是,出于多种原因,我不喜欢这种方法。最明显的是,我将需要为每种请求类型实现这样的代码(并且我有15种这样的代码)。 我很想知道是否有办法做类似的事情(变化很小且非侵入性) 问题答案: 通过Swif

  • 问题内容: 我正在使用Django-CMS的Django项目中构建一个相当简单的应用程序,即研究项目。(这是我对项目/应用程序的首次尝试。)它的主要目的是存储各种知识资产(例如,研究人员撰写的文章,书籍等)。 问题是,当我将浏览器指向/ research /时,出现一条错误,提示表’research_journal’不存在(“ no such table”)。 我正在使用带有sqlite3数据库的