Установлен Drupal 7 с помощью установщика веб-платформы в Windows 2008

По какой-то причине файловый модуль при загрузке файла использует первые несколько букв имени файла в качестве уникального ключа для хранения в базе данных, что, конечно, очень быстро вызывает проблемы.

Мне интересно, у кого-нибудь есть обходной путь для этого?

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

3 ответа3

1

Я только что нашел сообщение об ошибке для этой проблемы: http://drupal.org/node/10508004 (есть патч)

0

Видимо, некоторые гениальные вставили это в базу данных:

__unique_uri в таблице file_managed является вычисляемым полем:

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

Я испытал точно такую же проблему сегодня. Это случилось, когда я пытался загрузить новую тему.

Я установил другой экземпляр Drupal с базой данных MySQL, чтобы сравнить таблицы и проверить, было ли там вычисляемое поле.

Там не было ни одного. В MySQL индекс строится на поле 'uri'

Итак, в моей базе данных SQL-сервера я переместил индекс 'uri_unique' из поля '__unique_uri' в поле 'uri' (как в MySQL). И это сработало просто отлично!

Я предполагаю, что это менее эффективно, так как поле nvarchar(255), где вычисляемое поле было varbinary(16) ... и я надеюсь, что у меня не будет проблем позже ...Но, по крайней мере, это решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .