数据库连接疑难解答

上次更新日期: 2021年12月20日

对 Dreamweaver 中的权限问题、Microsoft 错误消息和 MySQL 错误消息进行疑难解答。

用户界面已经在 Dreamweaver 和更高版本中做了简化。 因此,您可能在 Dreamweaver 和更高版本中找不到本文中描述的一些选项。 有关详细信息,请参阅此文章

权限问题疑难解答

文件夹或文件权限不足是最常见的问题之一。如果您的数据库位于 Windows 2000 或 Windows XP 计算机上\n,并且当您尝试在 Web 浏览器或 Live 视图中查看动态\n页面时收到错误消息,该错误可能是由于\n权限故障造成的。

尝试访问数据库的 Windows 帐户没有\n足够的权限。该帐户可能是匿名 Windows 帐户(默认为 IUSR_computername)或特定的用户帐户(如果页面已经过安全保护以供经过身份验证的访问)。

您必须更改权限以便为 IUSR_computername 帐户\n提供正确的权限,以便 Web 服务器可以访问数据库\n文件。此外,包含数据库文件的文件夹也必须\n设置特定的权限以写入该数据库。

如果页面要进行匿名访问,请为 IUSR_computername 帐户\n提供对文件夹和数据库文件的完全控制权限,如下面的\n步骤所述。

另外,如果数据库的路径是使用\nUNC(\\\\Server\\Share)引用的,请确保"共享权限"为\nIUSR_computername 帐户提供完全访问权限。即使共享位于本地 Web 服务器上,此步骤\n也适用。

如果您从其他位置复制数据库,它可能不会继承目标文件夹的权限,您可能需要更改数据库的权限。

检查或更改数据库文件\n权限(Windows XP)

确保您在计算机上具有管理员权限。
Windows Explorer 中,定位\n数据库文件或包含数据库的文件夹,右键单击\n文件或文件夹,然后选择"属性"。
选择“安全”选项卡。

此步骤仅适用于 NTFS 文件系统中。 如果是 FAT 文件系统,则该对话框没有“安全”选项卡。

如果"组或用户名称"列表中未列出 IUSR_computername 帐户\n,请单击"添加"按钮以\n添加该帐户。
在“选择用户或组”对话框中,单击“高级”。

对话框随即更改以显示更多的选项。

单击“位置”并选择计算机名称。
单击"立即查找"以显示与\n计算机关联的帐户名称列表。
选择 IUSR_computername 帐户并\n单击"确定",然后再单击"确定"以清除对话框。
要为 IUSR 帐户分配完全权限,请选择"完全\n控制",然后单击"确定"。

检查或更改数据库文件权限(Windows 2000)

确保您在计算机上具有管理员\n权限。
Windows Explorer 中,定位\n数据库文件或包含数据库的文件夹,右键单击\n文件或文件夹,然后选择"属性"。
选择“安全”选项卡。
注释

此步骤仅适用于 NTFS 文件系统中。 如果您使用的是 FAT 文件系统,对话框将不会包含"安全"\n选项卡。

如果"文件权限"对话框的 Windows 帐户中\n未列出 IUSR_computername 帐户\n,请单击"添加"按钮以添加该帐户。
在"选择用户、计算机或组"对话框中\n,从"Look In"菜单中选择计算机名称以显示\n与计算机关联的帐户名称列表。
选择 IUSR_computername 帐户并\n单击"添加"。
要为 IUSR 帐户分配完全权限,请从"访问权限类型"菜单中选择"完全\n控制",然后单击"确定"。

为了提高安全性,\n可以设置权限以便对包含数据库的\nweb 文件夹禁用读取权限。不允许浏览该文件夹,但网页仍能够访问数据库。

有关 IUSR 帐户和 web 服务器权限的更多信息,\n请参阅 Adobe 支持中心的以下技术说明:

Microsoft 错误消息疑难解答

如果您使用\nInternet Information Server (IIS) 和 Microsoft 数据库系统\n(例如 Access 或 SQL Server)从服务器请求动态页面,可能会出现这些 Microsoft 错误消息。

Adobe\n不为 Microsoft Windows 和 IIS 等第三方软件提供技术支持。如果此信息无法解决\n您的故障,请联系 Microsoft 技术支持或访问\nMicrosoft 支持网站:http://support.microsoft.com/

有关 80004005 错误的详细信息,请参阅 Microsoft 网站上的“INFO:Active Server Pages 和 Microsoft 数据访问组件中的 80004005 错误疑难解答指南 (Q306518)”,网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q306518。

[[Reference]80004005—未找到数据源名称且未指定默认驱动程序]

当您尝试\n在 web 浏览器或实时视图中查看动态页面时会发生此错误。错误\n消息可能会因您的数据库和 web 服务器而有所不同。错误消息的其他\n变体包括:

  • 80004005 — 驱动程序的 SQLSetConnectAttr 失败

  • 80004005 — 常规错误:无法打开注册表项“DriverId”

    可能的原因和解决方案如下:

  • 页面无法找到 DSN。 确保已经在 Web 服务器和本地计算机上创建了 DSN。

  • DSN 可能已设置为用户 DSN,而不是系统 DSN。 请删除用户 DSN 并创建一个系统 DSN 取代它。

如果不删除用户 DSN,则重复的 DSN 名称会产生新的 ODBC 错误。

如果使用 Microsoft Access,则可能数据库文件 (.mdb) 已锁定。 此锁定可能是因不同名称的 DSN 访问该数据库引起的。 在 Windows 资源管理器中,从包含数据库文件 (.mdb) 的文件夹中搜索锁定文件 (.ldb) 并删除该 .ldb 文件。 如果另一个 DSN 正指向同一数据库文件,请删除该 DSN,以防止以后出错。 请在进行任何更改后重新启动计算机。

[[Reference]80004005—无法使用"(未知)";文件已在使用中]

当您使用 Microsoft Access 数据库并尝试在 web 浏览器或 Live 视图中查看动态页面时,会出现此错误。此错误消息的另一个变体是"80004005—Microsoft Jet 数据库引擎无法打开文件(未知)"。

可能的原因是权限故障。具体的原因和解决方案如下:

  • Internet Information Server 使用的帐户(通常是 IUSR)可能对基于文件的数据库或包含该文件的文件夹没有正确的 Windows 权限。在用户管理器中检查 IIS 帐户 (IUSR) 的权限。

  • 您可能没有创建或删除临时文件的权限。请检查对该文件和文件夹的权限。 确保您具有创建或删除任何临时文件的权限。临时文件通常在与数据库相同的文件夹中创建,但文件也可能在其他文件夹(如 /Winnt)中创建。

  • 在 Windows 2000 中,可能需要更改 Access 数据库 DSN 的超时值。要更改超时值,选择"开始">"设置">"控制面板">"管理工具">"数据源 (ODBC)"。单击"系统"选项卡,突出显示正确的 DSN,然后单击"配置"按钮。单击“选项”按钮并将“页面超时”值更改为 5000

    如果您仍有故障,请参阅以下 Microsoft 知识库文章:

  • PRB: 80004005 "Couldn't Use '(unknown)'; File Already in Use" 位于 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174943

  • PRB:主要 Server Pages 中的 Microsoft Access 数据库连接在 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q253604 处失败。

  • PRB:使用 Access 时出现“无法打开未知文件”错误,网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q166029

[[参考]80004005—登录失败()]

当您使用 Microsoft SQL Server 并尝试在 web 浏览器或实时视图中查看动态页面时,会出现此错误。

当 SQL Server 不接受或不识别正在提交的登录帐户或密码(如果您使用的是标准安全性),或者 Windows 帐户未映射到 SQL 帐户(如果您使用的是集成安全性)时,会生成此错误。

可能的解决方案如下:

  • 如果您使用标准 安全性,帐户名称和密码可能不正确。尝试系统管理员帐户和密码(UID="sa"且无密码),该设置必须在连接字符串行中定义。(DSN 不存储 用户名和密码。)

  • 如果您使用集成安全性,请检查调用页面的 Windows 帐户 并找到其映射的 SQL 帐户(如果有)。

  • SQL Server 不允许在 SQL 帐户名称中使用下 划线。如果有人手动将 Windows IUSR_machinename 帐户映射到同名的 SQL 帐户,则会 失败。将任何使用下划线的帐户映射到 SQL 中不使用下划线的帐户名称。

[[参考]80004005—操作必须使用可更新的问题]

当事件正在更新记录集或在记录集中插入数据时会出现此错误。

以下是可能的原因和解决方案:

  • 包含数据库的文件夹设置的权限过于严格。必须将 IUSR 权限设置为读/写。

  • 数据库文件本身的权限没有完全的读/写权限。

  • 数据库可能位于 Inetpub/wwwroot 目录之外。虽然您可以查看和搜索数据,但除非数据库位于 wwwroot 目录中,否则您可能无法更新数据。

  • 记录集基于不可更新的查询。 联接是数据库中不可更新查询的典型示例。重新构建您的查询使其可更新。

    有关此错误的更多信息,请参阅 Microsoft 知识库中的"PRB: ASP 'Error The Query Is Not Updateable' When You Update Table Record",网址为 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174640

[[Reference]80040e07—条件表达式中数据类型不匹配]

当服务器尝试处理包含"插入记录"或"更新记录"服务器行为的页面,并且服务器行为试图将 Microsoft Access 数据库中的日期/时间列的值设置为空字符串("")时,会出现此错误。

Microsoft Access 具有强数据类型;它对给定列值实施严格的规则集。SQL 查询中的空字符串值无法存储在 Access 日期/时间列中。目前,唯一已知的解决方法是避免在 Access 中使用空字符串("")或任何其他不符合数据类型指定值范围的值来插入或更新日期/时间列。

[[参考]80040e10—参数太少]

当 SQL 查询中指定的列在数据库表中不存在时,会发生此错误。检查数据库表中的列名称与 SQL 查询中的列名称是否一致。此错误的原因通常是拼写错误。

[[参考]80040e10—COUNT 字段不正确]

当您在 web 浏览器中预览包含"插入记录"服务器行为的页面,并尝试使用它向 Microsoft Access 数据库中插入记录时,会发生此错误。

您可能正在尝试将记录插入到包含问号 (?) 的数据库字段中。在其字段名称中。问号对于某些数据库引擎(包括 Microsoft Access)来说是特殊字符,不应用于数据库表名或字段名。

打开您的数据库系统并删除问号 (?)。从字段名称中删除,并更新页面上引用此字段的 server 行为。

[[参考]80040e14—INSERT INTO 语句中的语法错误]

当服务器尝试处理包含插入记录服务器行为的页面时,会出现此错误。

此错误通常是由数据库中字段、对象或变量名称的以下一个或多个问题导致的:

  • 将保留字用作名称。 大多数数据库都有一组保留字。 例如,“date”是保留字,因而不能用于数据库中的列名称。

  • 名称中使用特殊字符。 特殊字符的示例包括:

    . / * : ! # & - ?

  • 在名称中使用空格。

    当为数据库中的对象定义了输入掩码并且插入的数据与该掩码不符时,也会出现此错误。

    若要解决该问题,在指定数据库中的列名称时,请避免使用“date”、“name”、“select”、“where”和“level”等保留字。 另外,请清除空格和特殊字符。

    有关常见数据库系统的保留字的列表,请参阅以下网页:

  • Microsoft Access(网址为 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;Q209187

  • MySQL(网址为 http://dev.mysql.com/doc/mysql/en/reserved-words.html

[[参考]80040e21—插入或更新时的 ODBC 错误]

当服务器尝试处理包含更新记录或插入记录服务器行为的页面时,会发生此错误。数据库无法处理 server 行为尝试执行的更新或插入操作。

以下是可能的 原因和解决方案:

  • 服务器行为尝试更新数据库表的自动编号字段或向自动编号字段插入记录。由于自动编号字段由数据库系统自动填充,任何从外部用值填充 这些字段的尝试都会失败。

  • server 行为正在更新或插入的 数据类型不适合数据库字段,例如将日期插入布尔值 (是/否)字段、将字符串插入数值字段或将 格式不当的字符串插入日期/时间字段。

[[参考]800a0bcd—BOF 或 EOF 为真]

当您尝试在 web 浏览器或实时视图中查看 动态页面时,会发生此错误。

当页面\n尝试显示来自空记录集的数据时,会出现故障。要解决此故障,\n请将"展开区域"服务器行为应用于要\n在页面上显示的动态内容,操作如下:

突出显示页面上的动态内容。

在"服务器行为"面板中,单击"加号 (+)"按钮\n并选择"展开区域">"记录集不为\n空时展开区域"。

选择提供动态内容的记录集,然后单击\n"确定"。

对页面上的每个动态内容元素重复步骤 1 到 3。

MySQL 错误消息疑难解答

在测试 PHP 数据库连接到 MySQL 4.1 时,您可能遇到的一个常见错误消息是"客户端不支持请求的身份验证协议。"请考虑升级 MySQL 客户端。

您可能需要恢复到 MySQL 的早期版本,或安装 PHP 5 并复制一些动态链接库 (DLL)。有关详细 说明,请参阅设置 PHP 开发环境