1

我正在使用 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 正在尝试对其进行某种数据转换?我没有看到我在哪里标记了要发生的任何地方。

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

4

1 回答 1

4

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

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

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

于 2011-02-23T19:48:40.483 回答