我遇到了最近数据库崩溃的问题。在恢复数据之后,我现在得到一些奇怪的解析错误,但不清楚它是否在数据中,或者是否是其他内容。请参阅附图,但它来自表单提交,cfupdate将数据存储到表中。
表单中有一个名为“next”的输入按钮,该内容将保存到数据库中。
所以我有以下问题:
这是在带有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
答案 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
标签 - 这是最快,最简单的解决方案。