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

ColdFusion错误:系统试图使用未定义的值,coldfusion,Coldfusion,我是一名研究生,刚接触ColdFusion 几年前,我开始着手一个已经由某人开发的项目,客户希望做一些更改。因此,我继续对表单insertdata.cfm的外观进行了一些小的修改,比如在下拉菜单中添加更多选项、更改标签名称等等 我非常确信这些更改不会以任何方式影响应用程序。信息上说错误的地方是——我甚至都没碰那部分。4天后,我开始犯这样一个奇怪的错误 Error Occurred While Processing Request The system has attempted to use a

我是一名研究生,刚接触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>
第三个错误

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
一般来说,如果您发现事情并非总是出错,请查找存储在会话中或在每个页面上重新定义的数据。然后在用户的页面单击或CF代码中查找可能缺少/重置这些分支的非标准分支

对于第一个问题,正如Al所指出的,这些值应该用于文本字段。但看看标签,以防他们无论如何都不在那里。您可以设置一个无意义的默认值,当您拥有该值时,记录上一页以及任何其他可能有用的信息,以帮助您找到用户如何进入该页而不必进入它之前的表单

第二个问题可能是因为MM_failureURL未定义或定义丢失。它很难看,但是您可以使用CFDUMP来确定它有时是否在另一个名称空间中,或者在哪里被删除

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


另一个建议:其中一些问题可能来自用户在应用程序中间的书签页,这将允许他们在不经过任何设置的情况下跳入,如您的登录表单将建立变量、查询名称等。如果您确信用户不能在没有初始化代码的情况下跳入,然后你就开始了边缘案例搜索。

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

当您尝试使用函数返回的值时,也会发生这种情况,但函数不返回值-这在过去一直困扰着我,但当我现在遇到此错误时,这是我寻找的第一件事…

问题是数据源问题。它与MySQL5和Coldfusion 8有关。Coldfusion 9已经解决了这个问题。您会注意到数据源没有MySQL 5的选项,只有3/4。

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

如果它们以前发生过,或者您无法回滚,那么您需要获得有关错误时间发生的情况的更多信息。你能安排发送错误信息吗

指向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>

可能有助于获取信息,这里有更多信息

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

我撰写了一篇关于如何临时修复它的小文章,直到Adobe发布热修复程序:

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

CF将传递空白文本字段和文本区域。它不会传递未选中的复选框和单选按钮,也不会传递未按下的按钮。如果您发布源代码,而不仅仅是错误,这将非常有用你在CF8上吗?当我将一个站点迁移到CF8时,我遇到了这个问题,我仍然无法找到解决方案,尽管:\n包含进一步阅读材料的答案解释了一个问题,但对用户并没有真正的帮助。
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>