我的 CFQUERY 结果结构中缺少 GENERATEDKEY 值

The GENERATEDKEY Value is Missing from my CFQUERY Result Structure

我有两个不同的 CF11 应用程序,它们有两个不同的数据源,每个数据源在同一个 Oracle 12g 数据库上都有自己的后端模式。在一个数据源 dsA 中,当我使用 CFQUERY 插入一条新记录时,结果结构包含一个 GENERATEDKEY 值。在数据源 dsB 中,当我 运行 完全相同的代码时,结果结构中没有 GENERATEDKEY 值。

这是我运行宁...

的测试代码
<cftry>
    <cfset ds = "dsA"/>

    <cfquery name="insertTest" datasource="#ds#" result="testResult">
        INSERT INTO categories(cat_name)
        VALUES ('testing')  
    </cfquery>

    <cfdump var="#testResult#" label="#ds#">

    <cfcatch>
        <cfdump var="#cfcatch#" label="#ds#"><cfabort>
    </cfcatch>
</cftry>

当我将数据源设置为 dsA 时,我得到了这个输出。注意 GENERATEDKEY 和 ROWID 值。

当我将数据源设置为 dsB 时,我得到了这个输出,没有 GENERATEDKEY 也没有 ROWID。

据我所知,两个 Oracle 模式的设置方式相同,两个数据源的配置也相同。有谁知道什么会导致一个查询 return GENERATEDKEY 而另一个不查询?我正在努力寻找造成这种情况的原因。

提前感谢您的任何建议。

好吧,我们从来没有弄清楚为什么这个数据源的行为与所有其他数据源不同。他们都使用相同的驱动程序,但没有其他选择,服务器管理员最终同意将 dsB 数据源驱动程序更改为 Oracle JDBC 瘦驱动程序,而不是 Macromedia 驱动程序。这样问题就解决了。

它并没有真正回答潜在的问题,但它是一种让应用程序再次运行的变通方法,所以我们暂时接受它。

我遇到了和你一样的问题。 GENERATEDKEY 缺少 <cfdump> struck。我再次检查了我的 table,结果我忘了将我的 id 字段设置为 Primary KeyAuto Increment。我更改了我的 table,我可以再次获得我的 GENERATEDKEY