2

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

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

所以我有以下问题:

  1. 有没有办法查看 SQL 查询是什么以及发生错误的位置?
  2. 为什么我会收到此错误的任何线索或提示?
  3. 有什么方法可以查看更多可能有帮助的信息?调试模式?

这是在带有 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
4

1 回答 1

3

我个人的建议是cfupdate用可比较的替换该声明cfquery。您获得的任何错误信息都将被cfupdate标签的体系结构所掩盖。

如果您真的对原始代码感到满意,您可以在标签中添加一个 formfields 属性,cfupdate并从要更新的列列表中省略“next”字段。

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

我的第一个猜测是“下一个”表单字段的内容对于该表列来说太长了,但是如果您将其从更新列的列表中删除,那将告诉您错误实际发生在哪里。如果在删除“next”列后,您在“txtdept”上收到错误,那么您就会知道该错误实际上发生在“txtpmidname”上(我的猜测仍然是值太长)。

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

于 2014-04-12T15:52:02.543 回答