选择*不返回所有列-Coldfusion / SQL Server 2008
||
我遇到了一些奇怪的行为,涉及到数据库查询,这是我以前从未见过的,希望您能阐明这个问题。
我有一个名为myTable的数据表,其中包含一些列;到目前为止,涉及它的一切都很好。现在,我刚刚添加了一个名为subTitle的列;和II注意到,为给定记录提取数据的“ 0”查询不知道该列(它表示返回的查询没有subTitle列),但是如果我明确命名该列(选择subTitle),它就是。我以为Coldfusion服务器可能正在缓存查询,所以我尝试使用
cachedwithin=\"#CreateTimeSpan(0, 0, 0, 0)#\"
但没有骰子。
考虑下面的代码:
<cfquery name=\"getSub\" datasource=\"#Application.datasourceName#\">
SELECT subTitle
FROM myTable
WHERE RecordID = \'674\'
</cfquery>
<cfoutput>#getSub.subTitle#</cfoutput>
<cfquery name=\"getInfo\" datasource=\"#Application.datasourceName#\">
SELECT *
FROM myTable
WHERE RecordID = \'674\'
</cfquery>
<cfoutput>#getInfo.subTitle#</cfoutput>
请记住,记录674的subTitle列中包含字符串“ test”,上述内容约为
测试
[[CRASH WITH ERROR]]
除非SQL Server 2008以某种方式将表的前一个形式化为SELECT *查询,否则这对我来说没有任何意义,但是奇怪的是,如果我直接在SQL Management Studio中运行查询,就不会有问题,并且显示所有带有选择*的列
坦白地说,这让我感到困惑。我知道我可以通过在select查询中显式命名所有所需的列而不是使用*来解决此问题(无论如何这是最佳做法),但是我想了解为什么会这样。
我已经使用SQL Server 2005多年了,从未发生过这样的事情,这使我相信它可能涉及SQL Server 2008中的新事物。但同样,该查询在Management Studio内部运行正常这一事实也不是一件容易的事。
===更新===
清除CF管理员中的模板缓存将解决此问题
没有找到相关结果
已邀请:
2 个回复
砷竣阿
财沟项胶
但是,不要离开生产代码...它将淘汰所有缓存ColdFusion的查询。我确实说这很脏;)