我是一名研究生,也是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
答案 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管理员,点击数据源,点击显示高级设置,取消选中维护连接。你已经永远消除了这个问题。