无法执行语句,请重试:oracle.kv.FaultException: table 中没有此类对象 (12.1.4.3.11) (18.3.10)
Statement couldn't be executed, please retry: oracle.kv.FaultException: no such object in table (12.1.4.3.11) (18.3.10)
我正在使用包含 Oracle NoSQL 数据库的 Docker 容器。我正在尝试创建一个 table 并使用 Java 程序填充一些记录。
我试图存储的数据是来自存储在 JSON 文件中的推文的元数据,但为了简单起见,我准备了一个包含更基本示例的演示。在这个演示中,我将尝试做的是创建并填充一个只有 4 个字段的 table 和一个非常简单的 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 块,但是,它不会创建也不会填充任何 table。我收到的消息是:
Statement couldn't be executed, please retry: oracle.kv.FaultException: no such object in table (12.1.4.3.11) (18.3.10)
Fault class name: oracle.kv.impl.admin.AdminFaultException
我已经在上面的第一段代码中注释了导致此问题的异常。由于我没有找到任何成功搜索这个问题,我删除了 try-catch 以获得更详细的错误跟踪:
Exception in thread "main" oracle.kv.FaultException: no such object in table (12.1.4.3.11) (18.3.10)
Fault class name: oracle.kv.impl.admin.AdminFaultException
at oracle.kv.impl.client.admin.DdlStatementExecutor.executeDdl(DdlStatementExecutor.java:400)
at oracle.kv.impl.api.KVStoreImpl.executeDdl(KVStoreImpl.java:3242)
at oracle.kv.impl.api.KVStoreImpl.execute(KVStoreImpl.java:3157)
at oracle.kv.impl.api.KVStoreImpl.executeSync(KVStoreImpl.java:3328)
at oracle.kv.impl.api.KVStoreImpl.executeSync(KVStoreImpl.java:3321)
at writer_v01.demo(writer_v01.java:267)
at writer_v01.main(writer_v01.java:51)
Caused by: no such object in table (12.1.4.3.11) java.rmi.NoSuchObjectException: no such object in table
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
at com.sun.proxy.$Proxy23.getSerialVersion(Unknown Source)
at oracle.kv.impl.util.registry.RemoteAPI.(RemoteAPI.java:40)
at oracle.kv.impl.sna.StorageNodeAgentAPI.(StorageNodeAgentAPI.java:95)
at oracle.kv.impl.sna.StorageNodeAgentAPI.wrap(StorageNodeAgentAPI.java:104)
at oracle.kv.impl.util.registry.RegistryUtils.getStorageNodeAgent(RegistryUtils.java:577)
at oracle.kv.impl.admin.Admin.getSNStatus(Admin.java:3973)
at oracle.kv.impl.admin.Admin.getSNsVersion(Admin.java:3938)
at oracle.kv.impl.admin.Admin.getStoreVersion(Admin.java:3781)
at oracle.kv.impl.admin.plan.TablePlanGenerator.checkStoreVersion(TablePlanGenerator.java:122)
at oracle.kv.impl.admin.plan.TablePlanGenerator.createAddTablePlan(TablePlanGenerator.java:100)
at oracle.kv.impl.admin.plan.Planner.createAddTablePlan(Planner.java:493)
at oracle.kv.impl.admin.TableDdlOperation$CreateTable.perform(TableDdlOperation.java:97)
at oracle.kv.impl.admin.DdlHandler$DdlOperationExecutor.execute(DdlHandler.java:645)
at oracle.kv.impl.admin.DdlHandler.handleResults(DdlHandler.java:293)
at oracle.kv.impl.admin.DdlHandler.(DdlHandler.java:105)
at oracle.kv.impl.admin.Admin.executeStatement(Admin.java:4488)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:65)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62)
at oracle.kv.impl.fault.ProcessFaultHandler.execute(ProcessFaultHandler.java:118)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62)
at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44)
at oracle.kv.impl.security.SecureProxy$CheckingHandler.invoke(SecureProxy.java:559)
at oracle.kv.impl.security.SecureProxy.invoke(SecureProxy.java:114)
at com.sun.proxy.$Proxy18.execute(Unknown Source)
at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport.run(Transport.java:200)
at sun.rmi.transport.Transport.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run[=16=](TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at oracle.kv.impl.admin.Admin.getSNStatus(Admin.java:3975)
at oracle.kv.impl.admin.Admin.getSNsVersion(Admin.java:3938)
at oracle.kv.impl.admin.Admin.getStoreVersion(Admin.java:3781)
at oracle.kv.impl.admin.plan.TablePlanGenerator.checkStoreVersion(TablePlanGenerator.java:122)
at oracle.kv.impl.admin.plan.TablePlanGenerator.createAddTablePlan(TablePlanGenerator.java:100)
at oracle.kv.impl.admin.plan.Planner.createAddTablePlan(Planner.java:493)
at oracle.kv.impl.admin.TableDdlOperation$CreateTable.perform(TableDdlOperation.java:97)
at oracle.kv.impl.admin.DdlHandler$DdlOperationExecutor.execute(DdlHandler.java:645)
at oracle.kv.impl.admin.DdlHandler.handleResults(DdlHandler.java:293)
at oracle.kv.impl.admin.DdlHandler.(DdlHandler.java:105)
at oracle.kv.impl.admin.Admin.executeStatement(Admin.java:4488)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:65)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62)
at oracle.kv.impl.fault.ProcessFaultHandler.execute(ProcessFaultHandler.java:118)
at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62)
at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44)
at oracle.kv.impl.security.SecureProxy$CheckingHandler.invoke(SecureProxy.java:559)
at oracle.kv.impl.security.SecureProxy.invoke(SecureProxy.java:114)
at com.sun.proxy.$Proxy18.execute(Unknown Source)
at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport.run(Transport.java:200)
at sun.rmi.transport.Transport.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run[=16=](TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
at com.sun.proxy.$Proxy2.execute(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44)
at oracle.kv.impl.security.ContextProxy$ContextMethodHandler.invoke(ContextProxy.java:197)
at oracle.kv.impl.security.ContextProxy.invoke(ContextProxy.java:61)
at com.sun.proxy.$Proxy2.execute(Unknown Source)
at oracle.kv.impl.client.admin.ClientAdminServiceAPI.execute(ClientAdminServiceAPI.java:111)
at oracle.kv.impl.client.admin.DdlStatementExecutor.executeDdl(DdlStatementExecutor.java:363)
... 6 more
I have been searching for days on why this doesn't work. Moreover, I can't even perform operations on the kv terminal like
execute "CREATE TABLE ....."
因为它也行不通。有任何想法吗?提前谢谢你。
在 try 块中引入 query 变量声明后,这个问题得到解决;换句话说:
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);
}
但是,如果您执行命令:
execute "SELECT * FROM Carros"
将 return 给你 0 行,但是,如果你通过 SQLDeveloper 查看 table,你会看到它已正确创建并且还包含 [=22] 引入的数据=] 文件。我得出的结论是,这确实是一个错误。
我建议任何遇到与@user207421 在他的评论中所说的相同问题的人打开 Oracle 错误报告。
我正在使用包含 Oracle NoSQL 数据库的 Docker 容器。我正在尝试创建一个 table 并使用 Java 程序填充一些记录。
我试图存储的数据是来自存储在 JSON 文件中的推文的元数据,但为了简单起见,我准备了一个包含更基本示例的演示。在这个演示中,我将尝试做的是创建并填充一个只有 4 个字段的 table 和一个非常简单的 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 块,但是,它不会创建也不会填充任何 table。我收到的消息是:
Statement couldn't be executed, please retry: oracle.kv.FaultException: no such object in table (12.1.4.3.11) (18.3.10) Fault class name: oracle.kv.impl.admin.AdminFaultException
我已经在上面的第一段代码中注释了导致此问题的异常。由于我没有找到任何成功搜索这个问题,我删除了 try-catch 以获得更详细的错误跟踪:
Exception in thread "main" oracle.kv.FaultException: no such object in table (12.1.4.3.11) (18.3.10) Fault class name: oracle.kv.impl.admin.AdminFaultException at oracle.kv.impl.client.admin.DdlStatementExecutor.executeDdl(DdlStatementExecutor.java:400) at oracle.kv.impl.api.KVStoreImpl.executeDdl(KVStoreImpl.java:3242) at oracle.kv.impl.api.KVStoreImpl.execute(KVStoreImpl.java:3157) at oracle.kv.impl.api.KVStoreImpl.executeSync(KVStoreImpl.java:3328) at oracle.kv.impl.api.KVStoreImpl.executeSync(KVStoreImpl.java:3321) at writer_v01.demo(writer_v01.java:267) at writer_v01.main(writer_v01.java:51) Caused by: no such object in table (12.1.4.3.11) java.rmi.NoSuchObjectException: no such object in table at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179) at com.sun.proxy.$Proxy23.getSerialVersion(Unknown Source) at oracle.kv.impl.util.registry.RemoteAPI.(RemoteAPI.java:40) at oracle.kv.impl.sna.StorageNodeAgentAPI.(StorageNodeAgentAPI.java:95) at oracle.kv.impl.sna.StorageNodeAgentAPI.wrap(StorageNodeAgentAPI.java:104) at oracle.kv.impl.util.registry.RegistryUtils.getStorageNodeAgent(RegistryUtils.java:577) at oracle.kv.impl.admin.Admin.getSNStatus(Admin.java:3973) at oracle.kv.impl.admin.Admin.getSNsVersion(Admin.java:3938) at oracle.kv.impl.admin.Admin.getStoreVersion(Admin.java:3781) at oracle.kv.impl.admin.plan.TablePlanGenerator.checkStoreVersion(TablePlanGenerator.java:122) at oracle.kv.impl.admin.plan.TablePlanGenerator.createAddTablePlan(TablePlanGenerator.java:100) at oracle.kv.impl.admin.plan.Planner.createAddTablePlan(Planner.java:493) at oracle.kv.impl.admin.TableDdlOperation$CreateTable.perform(TableDdlOperation.java:97) at oracle.kv.impl.admin.DdlHandler$DdlOperationExecutor.execute(DdlHandler.java:645) at oracle.kv.impl.admin.DdlHandler.handleResults(DdlHandler.java:293) at oracle.kv.impl.admin.DdlHandler.(DdlHandler.java:105) at oracle.kv.impl.admin.Admin.executeStatement(Admin.java:4488) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:65) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62) at oracle.kv.impl.fault.ProcessFaultHandler.execute(ProcessFaultHandler.java:118) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62) at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44) at oracle.kv.impl.security.SecureProxy$CheckingHandler.invoke(SecureProxy.java:559) at oracle.kv.impl.security.SecureProxy.invoke(SecureProxy.java:114) at com.sun.proxy.$Proxy18.execute(Unknown Source) at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) at sun.rmi.transport.Transport.run(Transport.java:200) at sun.rmi.transport.Transport.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run[=16=](TCPTransport.java:688) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at oracle.kv.impl.admin.Admin.getSNStatus(Admin.java:3975) at oracle.kv.impl.admin.Admin.getSNsVersion(Admin.java:3938) at oracle.kv.impl.admin.Admin.getStoreVersion(Admin.java:3781) at oracle.kv.impl.admin.plan.TablePlanGenerator.checkStoreVersion(TablePlanGenerator.java:122) at oracle.kv.impl.admin.plan.TablePlanGenerator.createAddTablePlan(TablePlanGenerator.java:100) at oracle.kv.impl.admin.plan.Planner.createAddTablePlan(Planner.java:493) at oracle.kv.impl.admin.TableDdlOperation$CreateTable.perform(TableDdlOperation.java:97) at oracle.kv.impl.admin.DdlHandler$DdlOperationExecutor.execute(DdlHandler.java:645) at oracle.kv.impl.admin.DdlHandler.handleResults(DdlHandler.java:293) at oracle.kv.impl.admin.DdlHandler.(DdlHandler.java:105) at oracle.kv.impl.admin.Admin.executeStatement(Admin.java:4488) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:65) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62) at oracle.kv.impl.fault.ProcessFaultHandler.execute(ProcessFaultHandler.java:118) at oracle.kv.impl.admin.ClientAdminServiceImpl.execute(ClientAdminServiceImpl.java:62) at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44) at oracle.kv.impl.security.SecureProxy$CheckingHandler.invoke(SecureProxy.java:559) at oracle.kv.impl.security.SecureProxy.invoke(SecureProxy.java:114) at com.sun.proxy.$Proxy18.execute(Unknown Source) at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) at sun.rmi.transport.Transport.run(Transport.java:200) at sun.rmi.transport.Transport.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run[=16=](TCPTransport.java:688) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179) at com.sun.proxy.$Proxy2.execute(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at oracle.kv.impl.security.MethodHandlerUtils.invokeMethod(MethodHandlerUtils.java:44) at oracle.kv.impl.security.ContextProxy$ContextMethodHandler.invoke(ContextProxy.java:197) at oracle.kv.impl.security.ContextProxy.invoke(ContextProxy.java:61) at com.sun.proxy.$Proxy2.execute(Unknown Source) at oracle.kv.impl.client.admin.ClientAdminServiceAPI.execute(ClientAdminServiceAPI.java:111) at oracle.kv.impl.client.admin.DdlStatementExecutor.executeDdl(DdlStatementExecutor.java:363) ... 6 more I have been searching for days on why this doesn't work. Moreover, I can't even perform operations on the kv terminal like
execute "CREATE TABLE ....."
因为它也行不通。有任何想法吗?提前谢谢你。
在 try 块中引入 query 变量声明后,这个问题得到解决;换句话说:
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);
}
但是,如果您执行命令:
execute "SELECT * FROM Carros"
将 return 给你 0 行,但是,如果你通过 SQLDeveloper 查看 table,你会看到它已正确创建并且还包含 [=22] 引入的数据=] 文件。我得出的结论是,这确实是一个错误。
我建议任何遇到与@user207421 在他的评论中所说的相同问题的人打开 Oracle 错误报告。