ВопросОшибка в базе данных
В профиле создаю дополнительные поля. При попытке заполнить их получаю следующую ошибку:
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'public://kuindgi3.jpg' for key
2: INSERT INTO {file_managed} (uid, filename, uri, filemime, filesize, status, timestamp) 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] => kuindgi3.jpg
[:db_insert_placeholder_2] => public://kuindgi3.jpg
[:db_insert_placeholder_3] => image/jpeg
[:db_insert_placeholder_4] => 56945
[:db_insert_placeholder_5] => 0
[:db_insert_placeholder_6] => 1321097385
)
в функции drupal_write_record() (строка 6884 в файле
/var/www/u2075053/public_html/sochinitell.pp.ua/includes/common.inc).»
- Гость
- 14.11.2011
- 10106
Комментарии
У вас в базе уже есть фотография с именем kuindgi3.jpg. Самый простй способ избежать этой ошибки - переименуйте фотографию, которую пытаетесь загрузить.
Она там была и не удалилась. То есть все содержимое, которое загружается в поле, не удаляется с удалением поля. Как исправить это? (права доступа к папкам стоят правильные, даже в службу техподдержки обращалась).
Как вариант - залезть в базу данных, открыть таблицу {file_managed} и вручную удалить строку, в которой столбец uri хранит значение public://kuindgi3.jpg
Удалила. Сейчас попробую снова. Но в дальнейшем, если я удалю картинку из профиля, а потом захочу ее вернуть - он ведь снова такое выдаст. Как сделать чтобы Друпал удалял файл насовсем, если я его удаляю?
Вообще он должен был удалиться из базы. А при совпадении имён - не выдавать ошибку, а переименовывать файл в имяфайла_0.jpg. Эта ошибка связана не с логикой работы Друпала - там всё работает правильно. Где-то косяк в настройке сайта. Возможно, сайт переносился с 6го Друпала на 7й. Могли закрасться мелкие баги.
Увы, даже удаление файла из базы данных не помогло. Удалила, закачала его в профиль снова - в настройках профиля появилась картинка, а на самой странице профиля тишина. Ничего. Словно этого поля и нет.
Нет, я сразу делала сайт на седьмом друпале. Мне бы очень надо выяснить, в чем причина.
Если в настройках появилась картинка - значит, она в базу закачалась. Очистите кэш сайта, возможно там осталось что-нибудь от старой картинки.
Очищение кэша не помогает. Я его за последние дни чистила не знаю сколько, после каждого чиха.



Вот смотрите:
Я создаю поле:
Как видите, оно точно создано. Потом захожу в правку своего аккаунта и загружаю фото:
Изображение загружено, я проверяла - оно появляется и в папке на сайте, и в базе данных. Вроде бы все в порядке.
Но в профиле:
ЕГО НЕТ. А раньше было - там где синяя черта проведена. И все это случилось после того, как я удалила старое поле с Изображением и добавила вот это, новое.
Отчаявшись с картинкой, я пыталась добавить поле с Датой. Снова поле прекрасно добавилось, в настройках аккаунта я поставила дату, но в профиле она так и не отобразилась. То же самое в разных браузерах, тоже самое случилось, когда картинку добавил другой пользователь на сайте.
В чем может быть дело?
Поставьте модуль transliteration и после этого перезалейте фотку. Я слышал, что в D7 есть проблемы с русскими символами. А transliteration будет переводить русские символы в латинские - и проблема должна уйти.
Проблема с самим полем. Я заливала фотки с самыми разными названиями, и метку поля ставила и на русском, и на английском. Они теперь никакие не отображаются, и именно в аккаунте.
У меня стоит модуль для переводов, только вот толку от него...
Метка поля может быть на любом языке, а вот название файла - должно быть латинскими. У вас файл называется _ласка.JPG - этого не должно быть. Зайдите в раздел /admin/config/media/file-system/transliteration и переведите все файлы.
Ммм, сейчас там загружен файл на английском языке:

Только это не помогает ни капельки.
И почему в там случае даже поле с датой все равно не отображается?
(в остальных местах поля добавляются нормально и сразу появляются).
И что может значить вот это сообщение (нашла в логах):
Notice: Undefined property: stdClass::$uri в функции file_delete() (строка 1231 в файле /var/www/u2075053/public_html/sochinitell.pp.ua/includes/file.inc).
По поводу ошибки - как я и говорил - проблема с удалением файла. Из-за чего она может быть, к сожалению, не лезя внутрь сайта сказать сложно.
По поводу того, что картинка не выводится - вы смотрели в настройках отображения полей? /admin/config/people/accounts/display
Готова предоставить доступ внутрь - только бы сделать что-то.
Да, настройки отображения в порядке - поле видимо. Только увы, не видимо на самом деле((
Давайте посмотрим в чём там дело. Высылайте доступы в контактную форму на сайте.
Евгений, огромное спасибо!! Все хорошо.
Подумала, что лучше напишите здесь, в чем было дело. А то мало ли, найдут еще такие руки-крюки вроде меня...
В разделе /admin/config/people/accounts/display/full картинка была выключена из отображения.
Незачто :)
Когда я пытаюсь попасть по этому адресу, оказывается, что у меня нет доступа(( Как такое может быть?
Ну значит нет доступа :) Но я с вашего сайта это скопировал, когда находился под вашим же аккаунтом :)
Комментировать