【发布时间】:2020-11-18 20:52:46
【问题描述】:
我有一些代码在过去几年中使用 cfquery 标记的结果属性中的 GENERATEDKEY。我最近注意到它不再是 Result 返回的结构的一部分。
<cfquery name="qryTest" datasource="#DSN#" result="sResult">
INSERT INTO users(fName, lName, City) VALUES(
'Test1', 'Test2', 'Test3')
</cfquery>
<cfdump var="#sResult#">
我只得到 CACHED、EXECUTIONTIME、RECORDCOUNT 和 SQL。环境是CF2016,SQL Server 2014
【问题讨论】:
-
数据源设置
Disable Autogenerated Keys到Disable retrieval of autogenerated keys中有一个选项。被检查了吗? -
@rrk,不,那里没有启用。所以谜团还在继续……
-
您最近是否切换了 JDBC 驱动程序或数据源?因为 CF 依赖于
java.sql.Statementinterface methodgetGeneratedKeys,所以必须相应地实现。 -
@CFML_Developer 你能否交叉检查一下你在结构中得到了 IDENTITYCOL 吗?
-
一个严重的问题 - 你有没有把它关掉再打开? :-) 问是因为几年前我遇到了类似的问题,在网上商店的生产中,CF/JDBC-driver/MSSQL 的某些部分停止返回
result.GENERATEDKEY,它已经工作了多年,并且在那里最近没有变化。我输入了一些后备代码以另一种方式获取身份,因为我无法证明在高峰时间重启是合理的,但最终在 CF 服务重启 + SQL Server 重启后,原来的问题就消失了,再也没有回来,所以我从来没有发现是什么原因造成的首先是它!
标签: coldfusion coldfusion-2016