Drupal 7 unter Windows - Probleme mit Dateimodulen

1358
TimothyP

Installierte Drupal 7 mit dem Web Platform-Installationsprogramm unter Windows 2008

Aus irgendeinem Grund verwendet das Dateimodul beim Hochladen einer Datei die ersten Buchstaben des Dateinamens als eindeutigen Schlüssel zum Speichern in der Datenbank, was natürlich sehr schnell zu Problemen führt.

Ich frage mich, ob jemand eine Abhilfe dafür hat?

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 Antworten auf die Frage

1
Cecile

Ich habe gerade den Fehlerbericht für dieses Problem gefunden: http://drupal.org/node/10508004 (Es gibt einen Patch)

Diese Frage scheint jetzt zu fehlen? David Barratt vor 10 Jahren 0
0
TimothyP

Anscheinend haben einige Genies dies in die Datenbank eingefügt:

Das __unique_uri in der file_managed-Tabelle ist ein berechnetes Feld:

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

Ich habe heute genau das gleiche Problem erfahren. Es passierte, als ich versuchte, ein neues Thema zu laden.

Ich habe eine weitere Instanz von Drupal mit einer MySQL-Datenbank installiert, um die Tabellen zu vergleichen und zu überprüfen, ob dort ein berechnetes Feld vorhanden ist.

Da war keiner. In MySQL basiert der Index auf dem Feld 'uri'.

Also habe ich in meiner SQL Server-Datenbank den Index 'uri_unique' vom Feld '__unique_uri' in das Feld 'uri' verschoben (wie in MySQL). Und es hat gut funktioniert!

Ich gehe davon aus, dass es weniger effizient ist, da das Feld nvarchar (255) ist, wo das berechnete Feld ein Varbinary (16) war ... und ich hoffe, dass ich später keinen Ärger mehr bekomme ... Aber zumindest wurde das Problem gelöst.

Ähnlich wie bei der Lösung, bei der ich das berechnete Feld geändert habe, denke ich, dass Ihre Lösung vielleicht sogar besser funktioniert. Thnx! TimothyP vor 13 Jahren 0