ColdFusion错误:系统尝试使用未定义的值

时间:2009-08-12 17:59:29

标签: coldfusion

我是一名研究生,也是ColdFusion的新成员。

几年前,我开始研究这个已经开发的项目,客户希望做一些改变。所以我继续对表单的外观做了一些小修改(insertdata.cfm),比如在下拉菜单中添加更多选项,更改标签名称等等。

我非常确定这些更改不会以任何方式影响应用程序。而消息说错误的地方是 - 我甚至没有触及那部分。现在4天后我开始得到这个奇怪的错误说

Error Occurred While Processing Request
The system has attempted to use an undefined value, which usually 
indicates a programming error, either in your code or some system code.

Null Pointers are another name for undefined values.

这是随机发生的,不是每次我访问网站或不同的网页。以下是错误:

第一个错误:

The error occurred in /export/web/virtual/web3_unt_edu/cps/webaccess/sites/Amarillo/index.cfm: line 8
5 :   SELECT UserName,Password FROM user_data WHERE UserName=
6 :   <cfqueryparam value="#FORM.UserName#" maxlength="8">
7 :     AND Password=
8 :   <cfqueryparam value="#FORM.Password#" maxlength="8">
9 :   </cfquery>
10 :   <cfif MM_rsUser.RecordCount NEQ 0>

我还尝试在cfsqltype="cf_sql_clob"中将cfqueryparam添加到我的朋友建议中,但它没有成功。

第二次错误:

The error occurred in /export/web/virtual/web3_unt_edu/cps/webaccess/sites/Amarillo/InsertData.cfm: line 13

11 :   <cflocation url="#MM_failureURL#" addtoken="no">
12 : </cfif>
13 : <cfquery name="rsDay" datasource="cps">
14 : SELECT days FROM days 
15 : </cfquery>

第3次错误

The error occurred in /export/web/virtual/web3_unt_edu/cps/webaccess/sites/Amarillo/InsertData.cfm: line 27

25 : ORDER BY ethnicity ASC
26 : </cfquery>
27 : <cfquery name="rsHospitals" datasource="cps_amarillo">
28 : SELECT *
29 : FROM hospitals

7 个答案:

答案 0 :(得分:1)

当你尝试使用函数返回的值时也会发生这种情况,但是函数没有返回值 - 这在过去困扰着我,但是当我现在得到这个错误时,这是​​我的第一件事寻找...

答案 1 :(得分:1)

问题是数据源问题。它与MySQL5和Coldfusion 8有关.Coldfusion 9有它的修复。您会注意到数据源没有MySQL 5的选项,仅为3/4。

答案 2 :(得分:0)

通常,如果您发现事情并非一直出错,请查找存储在会话中或在每个页面上重新定义的数据。然后在用户的页面点击或CF代码中找到可能缺少/重置这些分支的非标准分支。

对于第一个问题,正如Al指出的那样,这些值应该通过文本字段。但是看看CFPARAM标签来防止它们不在那里。您可以设置一个无意义的“默认”值,当您拥有它时,请记录上一页和任何其他可能有用的信息,以帮助您查找用户如何访问该页面而无需前往该表单。

第二个问题可能是因为未定义MM_failureURL或定义丢失。这很丑陋,但你可以使用CFDUMP来查明它是否有时在另一个命名空间中,或者它被丢弃的位置。

对于第三个问题,您是否检查过当前命名空间中是否定义了cps_amarillo和rsHospitals?

另一个建议:其中一些问题可能来自用户为应用程序“中间”添加书签页面,这样可以让他们无需进行任何设置(例如您的登录表单) )将建立您的变量,查询名称等。如果您确定用户无法在没有初始化代码的情况下跳转,那么您就不会使用Edge Case Hunt了。

答案 3 :(得分:0)

根据我的经验,当您(通常通过扩展/库/组件)尝试取消引用空指针时会发生这种类型的错误,这在C ++ / COM + CFX时代比现在更常见。使用基本CFQUERY代码进行的事实有点令人担忧。你使用什么数据库类型?我想知道它是否是驱动程序和/或数据源问题。

答案 4 :(得分:0)

在修改代码之前是否发生了这些错误?如果不是,不管感觉多么不可能,我会建议回滚你的更改(你确实记录了吗?)

如果以前发生过(或者您无法回滚),则需要获取有关错误时间内发生的更多信息。你能安排发送错误信息。

指向application.cfc

中的错误页面
<cferror type="exception" template="errorPage.cfm">

然后添加errrorpage.cfm

We are so sorry. Something went wrong. We are working on it now.

<cflog file="myapperrorlog" text="#error.message# - #error.diagnostics#">

<cfsavecontent variable="errortext">
<cfoutput>
An error occurred: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#<br />
Time: #dateFormat(now(), "short")# #timeFormat(now(), "short")#<br />

<cfdump var="#error#" label="Error">
<cfdump var="#form#" label="Form">
<cfdump var="#url#" label="URL">
<cfdump var="#session#" label="Session">

</cfoutput>
</cfsavecontent>

<cfmail to="bugs@myproject.com" from="root@myproject.com" subject="Error: #error.message#" type="html">
    #errortext#
</cfmail>

可以帮助获取信息,更多信息on rays site

答案 5 :(得分:0)

将服务器从mysql 4传输到mysql 5后,我遇到了这个Coldfusion错误

我已经整理了这篇关于如何临时修复它的小文章,直到从Adobe发布了一个热修复: Read here

答案 6 :(得分:0)

解决方案很简单,只需到coldfusion管理员,点击数据源,点击显示高级设置,取消选中维护连接。你已经永远消除了这个问题。