【问题标题】:ColdFusion Error: The system has attempted to use an undefined valueColdFusion 错误:系统已尝试使用未定义的值
【发布时间】:2009-08-12 17:59:29
【问题描述】:

我是一名研究生,刚接触 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>

我也尝试根据朋友的建议在cfqueryparam 中添加cfsqltype="cf_sql_clob",但没有成功。

第二个错误:

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>

第三次错误

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

【问题讨论】:

  • 如果您发布您的源代码,而不仅仅是错误,将会很有帮助。 :)
  • 你在CF8上吗?我在将站点迁移到 CF8 时遇到了这个问题,但我仍然无法找出解决方案:\

标签: coldfusion


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    问题是数据源问题。它与 MySQL5 和 Coldfusion 8 有关。Coldfusion 9 对此进行了修复。您会注意到数据源没有 MySQL 5 的选项,只有 3/4。

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

      • CF 将传递空白文本字段和文本区域。它不会传递未选中的复选框和单选按钮,或未按下的按钮。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        如果它们以前发生过(或者您无法回滚),您需要获取有关错误时发生的情况的更多信息。你能安排你收到错误信息吗?

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

        【讨论】:

          【解决方案6】:

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

          我整理了这篇小文章,介绍如何在 Adob​​e 发布热修复之前临时修复它: Read here

          【讨论】:

          • 包含进一步阅读材料的答案对用户没有真正的帮助。
          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 2019-07-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-22
            • 1970-01-01
            相关资源
            最近更新 更多