我正在使用MS SQL Server 2005在Windows Server上使用ColdFusion 9.我遇到了一个奇怪的问题。
我通过查询数据库中的表,获取必要的信息以及从结果中构建对象来创建对象。所以如果我的表有这些列:
id
name
address
我正在使用get_id(),get_name(),get_address()等方法创建一个对象。所有这些工作正常,当我查询这些方法时,我得到了我期望的结果。
但现在我进去改变桌子。我添加了一个新列,例如“city”。一切正常,对象仍然实例化。但现在我进入并将一些数据放入新专栏。现在我的对象实例化不再起作用了。我收到这样的通用错误:
element ADDRESS is undefined in instance
我注意到我仍然在cfquery语句中包含了cftry标签,因此我将其关闭。现在我看到了这个错误:
unsupported data conversion
所以我去了数据库,我完全删除了新列。现在一切正常,和以前一样。所以当我向这个表添加一个新列时,似乎SQL Server正在尝试对它进行某种数据转换?我没有看到我在哪里被标记在任何地方发生。
非常感谢任何可以给予的帮助!
答案 0 :(得分:4)
检查以确保您的查询未使用SELECT *来获取列。如果您使用SELECT *,SQL Server可以缓存执行计划而不返回已添加的列。
另一种解决方法是在查询中添加换行符或其他任何内容,以便SQL服务器创建新的执行计划。
无论哪种方式,远离SELECT *,因为它的性能较差,并且肯定会导致这样的问题。