【问题标题】:strange coldfusion errors after ms sql server table changems sql server 表更改后出现奇怪的coldfusion错误
【发布时间】:2011-02-23 18:55:27
【问题描述】:

我正在使用 MS SQL Server 2005 在 Windows Server 上使用 ColdFusion 9。我遇到了一个奇怪的问题。

我通过查询数据库中的表、获取必要的信息并根据结果构建对象来创建对象。所以如果我的表有这些列:

id
name
address

我正在使用 get_id()、get_name()、get_address() 等方法创建一个对象。所有这些工作正常,当我查询这些方法时,我得到了我期望的结果。

但现在我进去换桌子。我添加了一个新列,例如“城市”。一切正常,对象仍在实例化。但现在我进去并将一些数据放入那个新列中。现在我的对象实例化不再起作用。我收到这样的一般错误:

element ADDRESS is undefined in instance

我注意到我仍然有 cftry 标记包裹在 cfquery 语句周围,所以我把它们去掉了。现在我看到了这个错误:

unsupported data conversion

所以我转到数据库并完全删除了新列。现在一切正常,和以前一样。所以似乎当我向这个表添加一个新列时,SQL Server 正在尝试对其进行某种数据转换?我没有看到我在哪里标记了要发生的任何地方。

任何可以提供的帮助将不胜感激!

【问题讨论】:

  • 那个cfc是否继承自另一个cfc,错误可能在那里发生。
  • 我在下面发布了我认为可能是正确答案的答案,但我们确实需要更多信息才能很好地确定问题。引发错误的行上的代码是什么?您的 SQL 是如何构建的?您的方法是如何生成的(手动,onMissingTemplate())?信息越多越好。
  • @Dan - 你对 SELECT * 的回答正是我所需要的。谢谢!

标签: sql-server sql-server-2005 coldfusion coldfusion-9


【解决方案1】:

检查以确保您的查询没有使用 SELECT * 来获取列。如果您使用 SELECT *,SQL Server 可以缓存执行计划并且不返回已添加的列。

解决此问题的另一种方法是在查询中简单地添加换行符或其他任何内容,以便 SQL Server 将创建一个新的执行计划。

无论哪种方式,远离 SELECT *,因为它的性能较差,并且肯定会导致这样的问题。

【讨论】:

  • 这就是问题所在,我使用的是 SELECT *。非常感谢!
猜你喜欢
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多