分享

写回答

发帖

[提问] 请版主帮忙,权限设置问题

GoDaddy GoDaddy 1727 人阅读 | 17 人回复

发表于 2009-2-4 14:23:03 | 显示全部楼层 |阅读模式

版主,我的问题是不能进入网站后台进行修改等操作,在论坛里看到说是因为文件夹权限问题,可是我试着做了权限设置还是无法解决问题。这个问题已经困扰我很久了,你可以帮我用远程看看吗

回答|共 17 个

add.c

发表于 2009-2-4 14:46:45 | 显示全部楼层

后台出现什么问题?

LRmaisie

发表于 2009-2-4 15:23:26 | 显示全部楼层

后台可以进入,但是不能做修改。我的代码应该没有问题。所以可能是空间商给的权限问题。错误如下:
Microsoft JET Database Engine error '80004005'

Operation must use an updateable query.

/admin_xin.asp, line 111

add.c

发表于 2009-2-4 15:49:56 | 显示全部楼层

下面是我在微软官方上找的,你查看下
当您的脚本试图执行更新或执行会更改数据库中的信息的其他某种操作时,通常会遇到此错误。出现此错误的原因是 ADO 由于以下某种原因而无法写入数据库:

   1. 最常见的原因是 Internet 来宾帐户(IUSR_MACHINE,默认情况下该帐户属于“Everyone”组)对数据库文件 (.mdb) 没有写权限。要解决此问题,请使用 Explorer 中的“安全”选项卡来调整此文件的属性,以便 Internet 来宾帐户具有正确的权限。

      注意:在将 Microsoft Access 数据库与 ADO 一起使用时,还必须授予 Internet 来宾帐户对包含 .mdb 文件的目录的写权限。这是因为 Jet 会创建一个用于处理数据库锁定的 .ldb 文件。由于 Jet 可能会在“Temp”目录中创建临时文件,因此您可能还需要授予对该文件夹的读/写权限。
   2. 出现此错误的第二个原因是数据库不是使用具有写权限的正确模式打开的。如果您对 Connection 对象执行 Open 操作,则应使用 Mode 属性指示对该连接所拥有的权限,如下所示:

            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

                                                     

      注意:默认情况下,MODE 设置为 0(adModeUnknown),该值通常允许更新。
   3. 出现此错误的另一个原因是:在 ODBC 管理器中,DSN 的“选项”页中的“只读”设置可能被选中。
   4. 最后一个问题和替代方法适用于所有 SQL 数据源。违反数据库的引用完整性的 SQL 语句可以导致出现此错误。下面是一些最常见的失败的查询:
          * 其中最简单的一组查询是以下您无法更改的查询:UniqueValue 属性设置为 Yes 的交叉表查询、SQL 传递查询、联合查询或更新(即生成表)操作查询。

          * 另一种非常常见的原因是联接包含的链接 ODBC 表的索引不是唯一的。在这种情况下,SQL 无法保证表中的记录是唯一,该表中字段的值将随查询发生更改。

          * 有一种原因确实有可靠的替代方法。如果您尝试更新“一对多”查询的“一”方的联接字段,操作将会失败,除非您启用级联更新。因为这样您就可以将引用完整性委托给 JET 引擎。

add.c

发表于 2009-2-4 16:28:46 | 显示全部楼层

建议你查看下数据库用户名

LRmaisie

发表于 2009-2-5 11:50:54 | 显示全部楼层

首先谢谢版主的热心帮助。
我打开了一个文件ADOFUNCTIONS,是从这里查数据库名的吧,打开了也不知道怎么修改呀,我的数据库是OLEDB的吧。
根据你上面的帖子: 1.我的INTERNET来宾帐户不知怎么设置,装了IIS服务才可以设置的吧,我电脑好像没有装。2.我在打开的ADOFUNCTIONS里看不到上面第二条的代码呀。第3条与第4条不太明白。我在网上还搜到“5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000) 中的查询时,在执行这个查询是会出现该错误。”这条和我好像没关系。
HELP~

add.c

发表于 2009-2-5 12:00:15 | 显示全部楼层

把你的数据库连接贴出来
RAKSmart

LRmaisie

发表于 2009-2-5 13:14:36 | 显示全部楼层

<!-- #include file="adovbs.inc" -->  
<%  
    Dim objConn   
    Function GetRecordset(FileName, TableName)
        '打开数据库连接
        Set objConn = Server.CreateObject("ADODB.Connection")                          
        objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                   "Data Source=" & Server.MapPath(FileName)               
        objConn.Open                                                                  

        '从数据表中读取记录并存放在Recordset对象中
        Set GetRecordset = Server.CreateObject("ADODB.Recordset")
        GetRecordset.Open TableName, objConn, adOpenKeyset, adLockOptimistic, adCmdTable
    End Function   

这是一部分,你看看有问题吗

add.c

发表于 2009-2-5 13:25:17 | 显示全部楼层

/admin_xin.asp, line 111
上面这行的内容是?

LRmaisie

发表于 2009-2-5 13:38:16 | 显示全部楼层

If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_industrial_STRING
Recordset1.Source = "SELECT * FROM softsort"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

这是111行Recordset1.CursorType = 0和其上下的代码.
您需要登录后才可以回帖 登录 | 注册

本版积分规则