c# - 找不到 ID 为 [xx] 的查询
问题描述
通过 .Net Core 中的 ODBC 连接运行 SQL DDL 语句时出现错误。
我正在使用通过 OdbcConnection (System.Data.Odbc v4.5.0) 从 .Net Core (v2.2) 连接的全新默认 Ignite (v2.7) 实例。
堆栈跟踪:
2019-56-04 10:56:57.622 [ERROR] CREATE TABLE X (Id varchar(255) not null, Value int, PRIMARY KEY (Id));CREATE TABLE Y (Id varchar(255) not null, Value int, PRIMARY KEY (Id));
2019-56-04 10:56:57.710 [ERROR] ERROR [HY000] Failed to find query with ID: 0
2019-56-04 10:56:57.718 [ERROR] at System.Data.Odbc.OdbcDataReader.NextResult(Boolean disposing, Boolean allresults)
at System.Data.Odbc.OdbcDataReader.FirstResult()
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
at System.Data.Common.DbCommand.ExecuteNonQueryAsync(CancellationToken cancellationToken)
我注意到,如果我将这两个语句分成对 ExecuteNonQuery 的单独调用,它确实有效,所以我假设 Ignite 在影响记录数时不喜欢多个语句。
我从 v2.3 中发现了一个类似的问题,但我认为这是不同的,我在 v2.7 中得到了它。
复制器:
using System;
using System.Data.Odbc;
namespace IgniteMultistatementReproducer {
internal class Program {
private static void Main(string[] args) {
try {
using (var conn = new OdbcConnection($"DRIVER={{Apache Ignite}};ADDRESS=localhost:10800;")) {
conn.Open();
var cmd = new OdbcCommand {
CommandText = "CREATE TABLE X (Id varchar(255) not null, Value int, PRIMARY KEY (Id));CREATE TABLE Y (Id varchar(255) not null, Value int, PRIMARY KEY (Id));",
Connection = conn
};
var numRecordsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"Num Records Affected: {numRecordsAffected}");
}
} catch (Exception ex) {
Console.WriteLine(ex);
}
}
}
}
解决方案
推荐阅读
- ignite - class org.apache.ignite.IgniteException:无法执行操作,因为集群处于非活动状态
- sql - SQL忽略WHERE子句
- sql - SQL:字段的交替值
- jquery - 级联依赖下拉菜单不起作用
- jquery - 如何使翻译变换从元素开始?
- amazon-web-services - 安排 Docker 映像在 AWS ECS 上定期运行?
- python - 去除低频词
- qt - 在 SQLite 中查询加密数据
- java - 如何显示来自 Spring 和 MyBatis 的 SQL 错误?
- julia - 迭代列表时删除列表项时的 Julia BoundsError