Опубликовано пользователем dm
При возникновении подобных ошибок:
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'public://1976363_19.jpg' for key 'uri': INSERT INTO {file_managed} (uid, filename, uri, filemime, filesize, timestamp, origname) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6); Array ( [:db_insert_placeholder_0] => 1 [:db_insert_placeholder_1] => 1976363_197636.89489263705611397.1600x1000.jpg [:db_insert_placeholder_2] => public://1976363_19.jpg [:db_insert_placeholder_3] => application/octet-stream [:db_insert_placeholder_4] => 46484 [:db_insert_placeholder_5] => 1635711385 [:db_insert_placeholder_6] => 1976363_197636.89489263705611397.1600x1000.jpg ) in drupal_write_record() (line 7495 of /var/www/mysite.com/includes/common.inc).
Нужно использовать модуль Fancy File Delete или аналогичный, для удаления не использованных файлов из таблицы file_managed.
Issue на Drupal.org
Код для получения fid файла по имени
-
$filename = 'filename.jpg';
-
$query = new EntityFieldQuery();
-
$result = $query->entityCondition('entity_type', 'file')
-
->propertyCondition('filename', $filename)
-
->execute();
-
// if you are guaranteed there is exactly one result, then:
-
$file_object = reset($result['file']);
-
$fid = $file_object->fid;
Посмотреть какой сущностью используется файл:
-
$file = file_load($fid);
-
$usage = file_usage_list($file);