Ошибка file_managed 1062 Duplicate entry

При возникновении подобных ошибок:
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 файла по имени

  1. $filename = 'filename.jpg';
  2. $query = new EntityFieldQuery();
  3. $result = $query->entityCondition('entity_type', 'file')
  4.   ->propertyCondition('filename', $filename)
  5.   ->execute();
  6. // if you are guaranteed there is exactly one result, then:
  7. $file_object = reset($result['file']);
  8. $fid = $file_object->fid;

Посмотреть какой сущностью используется файл:

  1. $file = file_load($fid);
  2. $usage = file_usage_list($file);

0 Комментариев

Добавить комментарий