Что делать при такой ошибке?
Duplicate key name 'type_name' query: ALTER TABLE system ADD INDEX type_name (type(12), name) в файле site.ru/includes/database.mysql-common.inc в строке 434.
Duplicate key name 'tab_root_weight_title' query: ALTER TABLE menu_router ADD INDEX tab_root_weight_title (tab_root(64), weight, title) в файле site.ru/includes/database.mysql-common.inc в строке 434.
Коллеги, после обновления сайта вылетели несколько ошибок, связанных с базой данных. Ошибку вызвал скорее всего Filefield. Так как при загрузке картинки выдается ошибка
warning: Invalid argument supplied for foreach() in site.ru/sites/all/modules/filefield/filefield_field.inc on line 127.
В результате не отображаются картинки, хотя загружаются и обрабатываются.
Что можно сделать в такой ситуации?
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Что именно (Сам Друпал с какой версии по какую? Какие модули?) обновлялось?
Сайт в это время был в off-line?
Скрипт Update.php точно нормально отработал?
У меня подобное случалось один раз на локале при обновлении старой заброшенной сборки Друпала с 6.12. сразу на 6.15. Скрипт Update.PHP сразу посыпался ошибками, но поскольку мне эта сборка была не очень важна, то я ее снес и разбираться не стал.
обновление было с 6.14 до 6.15, сайт был в оффлайне, помимо мелочей обновлялось вся связка имедж кэш, имедже апи, и злополучный Filefield.
Где-то на этом сайте я уже видел тему про проблемы при обновлении FileField. Воспользуйтесь поиском.
Да был похожий материал пользователя "Лампочка", но у них был косяк именно с FileField, у меня же глюк с базой при обновлении system module: до версии 6053. Ошибка с FileField вылетает только если закачивать материал.
Обновление модуля как и его удаление, установка заново не помогает.
упорно выбрасывает ошибку
user warning: Duplicate key name 'type_name' query: ALTER TABLE system ADD INDEX type_name (type(12), name) in site.ru/includes/database.mysql-common.inc on line 434.
$ret[] = update_sql($query);
в этой строчке я так понимаю идет запрос на обновление базы
Посмотрите, обновились ли таблицы. System и filefield в частности. Можно ручками смотреть, можно установить модуль schema - он покажет различия между схемами и реальными таблицами.
в модуле schema для filefield показаны 2 таблицы одна я так понимаю реальная, вторая правильная.
Dan - одному мне с этим не разобраться, можно вас попросить о платной консультации.
А если вдумчиво почитать, что пишет и попробовать понять, что не нравится?
Duplicate key name 'type_name' query: ALTER TABLE system ADD INDEX type_name (type(12), name)
Дублируется имя ключа type_name при выполнении запроса ALTER TABLE system ADD INDEX type_name (type(12), name)
Значит такой индекс УЖЕ создан. Удалите его командой DROP INDEX
Duplicate key name 'tab_root_weight_title' query: ALTER TABLE menu_router ADD INDEX tab_root_weight_title (tab_root(64), weight, title)
Дублируется имя ключа 'tab_root_weight_title' при выполнении запроса ALTER TABLE menu_router ADD INDEX tab_root_weight_title (tab_root(64), weight, title). Удалите его командой DROP INDEX
После чего запустить ту фигню, котрая раньше ругалась - она создаст данные индексы по новой. После чего все грабли должны исчезнуть.
DROP INDEX а где запустить эту команду, или это можно сделать вручную через phpMyAdmin?
Да, можно вручную из phpMyAdmin
Предварительно сделайте дамп БД на всякий случай и почитайте хелп на саму команду, чтобы понять синтаксис.
дамп сделал, посмотрел на базу, как её ...., без помощи специалиста чую не разберусь
А! Ну понятно. Если даже такие элементарные действия вызывают затруднения, тогда действительно, привлекайте специалистов за денежку.
Сайт готовый и к тому же рабочий, опыт чтобы выявлять и исправлять ошибки не достаточен, по этому решил не рисковать. Обратился за помощью к Даниэлю (Den).
Azerot - спасибо за участие, коллега : )