Windows 上的 Drupal 7 - 文件模块问题

Windows 上的 Drupal 7 - 文件模块问题

在 Windows 2008 上使用 Web 平台安装程序安装 Drupal 7

由于某种原因,当您上传文件时,文件模块使用文件名的前几个字母作为唯一键存储在数据库中,这当然会很快导致问题。

我想知道是否有人可以解决这个问题?

An AJAX HTTP request terminated abnormally. Debugging information follows. 

Path: /file/ajax/field_file/und/0/form-EBMatHzV5cZXcWvXJtdADSdyw7Id9-GIpFM_NCJg_a4 

StatusText: n/a 

ResponseText:  Error message PDOException: SQLSTATE[23000]: [Microsoft][SQL Server Native Client10.0][SQL Server]Cannot insert duplicate key row in object 'dbo.file_managed' with unique index 'uri_unique'. in drupal_write_record() (line 6776 of  ..........\includes\common.inc). Error The website encountered an unexpected error. Please try again later.   

ReadyState: undefined

答案1

我今天也遇到了同样的问题。当我尝试加载新主题时也出现了同样的问题。

我已经安装了另一个带有 MySQL 数据库的 Drupal 实例来比较表并检查其中是否有计算字段。

没有。在 MySQL 中,索引建立在字段“uri”上

因此,在我的 SQL Server 数据库中,我将“uri_unique”索引从字段“__unique_uri”移至字段“uri”(与 MySQL 类似)。而且效果很好!

我认为它的效率较低,因为字段是 nvarchar(255),而计算字段是 varbinary(16)...我希望以后不会遇到麻烦...但至少它解决了这个问题。

答案2

我刚刚发现了该问题的错误报告: http://drupal.org/node/10508004 (有补丁)

答案3

显然有些天才将其插入到数据库中:

file_managed 表中的 __unique_uri 是一个计算字段:

(CONVERT([varbinary](16),hashbytes('MD4',coalesce(CONVERT([varbinary],[uri],0),CONVERT([varbinary],[__pk],0))),0))

相关内容