討論出錯(cuò)——設(shè)置必須是可更新的查詢
發(fā)表時(shí)間:2024-05-18 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這里是微軟官方站點(diǎn)對(duì)此的解釋,通常來(lái)說(shuō),這個(gè)是一個(gè)權(quán)限問(wèn)題。 http://support.microsoft.com/support/kb/articles/Q175/1/68.ASP 特征: 下面是使用ADO和ASP遇到這個(gè)情況的一種錯(cuò)誤代碼。 Microsoft OLE DB Provide...
這里是微軟官方站點(diǎn)對(duì)此的解釋,通常來(lái)說(shuō),這個(gè)是一個(gè)權(quán)限問(wèn)題。
http://support.microsoft.com/support/kb/articles/Q175/1/68.ASP
特征:
下面是使用ADO和ASP遇到這個(gè)情況的一種錯(cuò)誤代碼。
Microsoft OLE DB Provider for ODBC Drivers error ' 80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] 操作必須是一個(gè)可更新的查詢
原因:
本篇文章描述了三個(gè)該錯(cuò)誤發(fā)生的主要原因以及錯(cuò)誤產(chǎn)生區(qū)域。盡管這兒引用的是ACCESS數(shù)據(jù)庫(kù),但是對(duì)其他類型的數(shù)據(jù)庫(kù)也同樣適用。
解決辦法
這個(gè)錯(cuò)誤通常是在你對(duì)數(shù)據(jù)庫(kù)內(nèi)容做更新或者在試圖改變數(shù)據(jù)庫(kù)內(nèi)容的時(shí)候產(chǎn)生的,這個(gè)錯(cuò)誤的發(fā)生是因?yàn)槟腁DO操作由于以下的某個(gè)原因而導(dǎo)致寫(xiě)入失。
1、最普遍的原因是您的INTERNET來(lái)賓帳號(hào)(Iuser_machine)沒(méi)有寫(xiě)入數(shù)據(jù)庫(kù)(ACCESS)的權(quán)限,您可以在瀏覽器安全設(shè)置里給該帳號(hào)設(shè)置正確的權(quán)限。注意:當(dāng)使用ACCESS和ADO的時(shí)候,也必須給該帳號(hào)以寫(xiě)目錄的權(quán)限,也就是存放該MDB文件的地方,這個(gè)是因?yàn)閿?shù)據(jù)庫(kù)引擎會(huì)建立一個(gè).LDB文件來(lái)出路數(shù)據(jù)庫(kù)的鎖定操作。你同時(shí)也應(yīng)該給INTERNET臨時(shí)文件夾設(shè)置讀寫(xiě)權(quán)限,因?yàn)閿?shù)據(jù)庫(kù)引擎有可能會(huì)在該目錄里面建立相關(guān)臨時(shí)文件。
2、第二個(gè)原因是數(shù)據(jù)庫(kù)的打開(kāi)方式不對(duì),比如打開(kāi)方式是不可寫(xiě)的,也會(huì)導(dǎo)致該錯(cuò)誤,當(dāng)您使用CONNECTION對(duì)象的時(shí)候,您可以使用如下代碼:
SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 ' 3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close
注意,默認(rèn)的模式是0,一般說(shuō)來(lái),該模式是允許更新操作的
3、另外一個(gè)原因是你有可能在ODBC管理器里把相應(yīng)的DNS設(shè)置里讓READ ONLY選項(xiàng)給選中了
4、最后一個(gè)原因(FOR SQL),您的操作可能違反了數(shù)據(jù)庫(kù)參照完整性,下面是一些普遍的導(dǎo)致該錯(cuò)誤的操作:
比如您在試圖改變一些不能改變的部件:比如交叉表、SQL PASS-THROUGH,連接,或者UPDATE操作一些已經(jīng)設(shè)置為唯一的選項(xiàng),比如一個(gè)自動(dòng)編號(hào)的ID等等。
還有一個(gè)普遍的原因是你的JOIN操作包含了沒(méi)有唯一索引的關(guān)聯(lián)表,在這種情況下,SQL無(wú)法保證您要試圖更新的表里的數(shù)據(jù)是唯一的。
任何一種原因都可能發(fā)生在很多情況下面,當(dāng)您試圖去更新一和一對(duì)多的聯(lián)合,也會(huì)發(fā)生這個(gè)錯(cuò)誤,除非允許層疊更新,請(qǐng)注意實(shí)施數(shù)據(jù)參照完整性
希望能對(duì)你有所幫助。