M.S*_*ute 5 oracle coldfusion rowid coldfusion-11
我有两个不同的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>
Run Code Online (Sandbox Code Playgroud)
将数据源设置为dsA时,得到此输出。注意GENERATEDKEY和ROWID值。
当我将数据源设置为dsB时,将得到此输出,没有GENERATEDKEY和ROWID。
据我所知,两个Oracle模式都是以相同的方式设置的,并且两个数据源的配置都相同。有谁知道什么可能导致一个查询返回GENERATEDKEY而另一个查询不返回?我正在拔头发试图找到原因。
在此先感谢您的任何建议。
好吧,我们从来没有弄清楚为什么这个数据源的行为与其他所有数据源不同。他们都使用相同的驱动程序,但没有其他选择,服务器管理员最终同意将 dsB 数据源驱动程序更改为 Oracle JDBC Thin 驱动程序,而不是 Macromedia 驱动程序。这已经解决了问题。
它并没有真正回答根本问题,但它是一种使应用程序再次运行的解决方法,所以我们现在就接受它。