Drupal 7 в Windows - проблемы с файловым модулем

1182
TimothyP

Установлен 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 
0

3 ответа на вопрос

1
Cecile

I just found the bug report for that problem: http://drupal.org/node/10508004 (There is a patch)

Эта проблема, кажется, отсутствует сейчас? David Barratt 10 лет назад 0
0
TimothyP

Apparently some genious inserted this in the database:

the __unique_uri in the file_managed table is a calculated field:

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

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

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

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

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

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

Подобно решению, которое я нашел, где я изменил вычисляемое поле, но я думаю, что ваше решение может работать даже лучше. Thnx! TimothyP 13 лет назад 0

Похожие вопросы