ADO.NET连接器:DELETE命令返回列的无效值:预期INT64



嘿,大家遇到了此问题,当列以其他方式订购列参数时,ADO.NET连接器返回"无效的列值:预期INT64":

错误详细信息: "操作被拒绝,因为该系统不处于操作执行所需的状态。 状态(statuscode = failedEdecontion,详细信息="表1:预期INT64中的无效值"列的列值。")"

var qry = "DELETE Table1";
var col = new SpannerParameterCollection();
col.Add("CustomerKey", SpannerDbType.Int64, 0);
col.Add("EmailAddress", SpannerDbType.String, "some@email.com");
col.Add("GeographyKey", SpannerDbType.Int64, 37);

这个人在客户关键上丢下错误:

var qry = "DELETE Table1";
var col = new SpannerParameterCollection();
col.Add("EmailAddress", SpannerDbType.String, "some@email.com");
col.Add("GeographyKey", SpannerDbType.Int64, 37);
col.Add("CustomerKey", SpannerDbType.Int64, 0);

但是,当列以这种方式安排时,将地理键和客户关键在第一个列表中移动时,它不会抛出错误

var qry = "DELETE Table1";
var col = new SpannerParameterCollection();
col.Add("GeographyKey", SpannerDbType.Int64, 37);
col.Add("CustomerKey", SpannerDbType.Int64, 0);
col.Add("EmailAddress", SpannerDbType.String, "some@email.com");

删除突变将密钥集作为其唯一的参数。密钥集不包括列名,仅包括键的值。因此,要求您按表的键列的顺序指定键值。在此处查看在引擎盖下被调用的方法的规范:https://cloud.google.com/spanner/docs/reference/rest/rest/v1/projects.instances.databases.sessions.sessions/commit#delete

我不熟悉ADO.NET连接器,但是即使您能够使用ADO.NET API中的列名和值组合来指定键值,最后只有键值将发送到云跨度。

相关内容

最新更新