cfupdate错误:如何查看更多调试信息

时间:2014-04-11 23:58:34

标签: ms-access coldfusion coldfusion-7

我遇到了最近数据库崩溃的问题。在恢复数据之后,我现在得到一些奇怪的解析错误,但不清楚它是否在数据中,或者是否是其他内容。请参阅附图,但它来自表单提交,cfupdate将数据存储到表中。

表单中有一个名为“next”的输入按钮,该内容将保存到数据库中。

所以我有以下问题:

  1. 有没有办法查看SQL查询是什么以及发生错误的位置?
  2. 为什么我收到此错误的任何线索或提示?
  3. 任何方式可以查看可能有用的更多信息?调试模式?
  4. 这是在带有MS Access数据库的ColdFusion MX7上运行。

    错误:

    Error Executing Database Query.
    
    Syntax error: Stopped parse at NEXT
    
    The error occurred in \\******\scholardetails2_en.cfm: line 19
    17 : <!--- if coming from page1, save data to database and renew session.txtEmail --->
    18 : <cfif IsDefined("Form.txtFirstName")>
    19 :    <cfupdate dataSource="****" tableName="tblApplications">
    20 :    <!--- <cfset Session.txtEmail=Form.txtEmail> --->
    21 :    <!--- <cfset Session.language=Form.language> --->
    SQL   update tblApplications set TXTDOB= (param 1) 
    ,TXTPFIRSTNAME= (param 2) ,TXTPOB= (param 3) 
    ,TXTFLYNAME= (param 4) ,TXTOFFNAME= (param 5) 
    ,TXTOFFCITY= (param 6) ,TXTFIRSTNAME= (param 7) 
    ,TXTPROVINCE= (param 8) ,TXTOFFPCODE= (param 9) 
    ,TXTGRANTS= (param 10) ,TXTEMPID= (param 11) 
    ,RDOGENDER= (param 12) ,CBOCOUNTRY= (param 13) 
    ,TXTSTADR2= (param 14) ,TXTPFLYNAME= (param 15) 
    ,TXTTELNO= (param 16) ,LANGUAGE= (param 17) 
    ,TXTOFFSTREET2= (param 18) ,TXTOFFSTREET3= (param 19) 
    ,TXTPOSITION= (param 20) ,TXTCITY= (param 21) 
    ,CBOOFFCOUNTRY= (param 22) ,TXTSTADR1= (param 23) 
    ,TXTPMIDNAME= (param 24) ,NEXT= (param 25) 
    ,TXTDEPT= (param 26) ,TXTPCODE= (param 27) 
    ,TXTPPHONE= (param 28) ,TXTMIDNAME= (param 29) 
    ,TXTOFFSTREET1= (param 30) ,CBOCOC= (param 31) ,TXTOFFPROVINCE= (param 32) 
    ,TXTSTADR3= (param 33) ,TXTPEMAIL= (param 34) 
    
    where txtEmail= (param 35)
    DATASOURCE    ****
    VENDORERRORCODE   172032
    SQLSTATE      2A000
    

1 个答案:

答案 0 :(得分:3)

我个人的建议是将cfupdate语句替换为具有可比性cfquery的语句。您获得的任何错误信息都会被cfupdate标记的体系结构所笼罩。

如果您真的觉得与原始代码结合了,可以在cfupdate标记中添加一个formfields属性,并从要更新的列列表中省略“next”字段。

<cfupdate datasource="***" tableName="tblApplications" 
formFields="txtpfirstname,txtpmidname,txtplastname,txtdob,txtpob,..." />

我的第一个猜测是“下一个”表单字段的内容对于该表列而言太长,但如果从更新列列表中删除它,则会告诉您实际发生错误的位置。如果在删除“下一个”列后,您在“txtdept”上出现错误,那么您将知道错误实际发生在“txtpmidname”上(我的猜测仍然是值太长)。

Dan是正确的,您可以在server范围内找到有关服务器的信息(版本号等)。 Railo或BlueDragon服务器将具有额外的结构,但是像Dan提到的那样,它不会告诉您有关数据库驱动程序的任何信息。如果它在任何地方,那么该信息在ColdFusion管理员中,但是看到驱动程序版本不太可能解决问题。所有这些都让我回到了原来的建议:用cfupdate替换cfquery标签 - 这是最快,最简单的解决方案。