Что делать при такой ошибке?

Главные вкладки

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 3:01

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.

В результате не отображаются картинки, хотя загружаются и обрабатываются.

Что можно сделать в такой ситуации?

Комментарии

Аватар пользователя Alex_R Alex_R 11 января 2010 в 3:23

mak-vardugin wrote:
Коллеги, после обновления сайта вылетели несколько ошибок
...
Что можно сделать в такой ситуации?

Что именно (Сам Друпал с какой версии по какую? Какие модули?) обновлялось?
Сайт в это время был в off-line?
Скрипт Update.php точно нормально отработал?

У меня подобное случалось один раз на локале при обновлении старой заброшенной сборки Друпала с 6.12. сразу на 6.15. Скрипт Update.PHP сразу посыпался ошибками, но поскольку мне эта сборка была не очень важна, то я ее снес и разбираться не стал.

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 3:36

обновление было с 6.14 до 6.15, сайт был в оффлайне, помимо мелочей обновлялось вся связка имедж кэш, имедже апи, и злополучный Filefield.

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 11:27

Да был похожий материал пользователя "Лампочка", но у них был косяк именно с FileField, у меня же глюк с базой при обновлении system module: до версии 6053. Ошибка с FileField вылетает только если закачивать материал.
Обновление модуля как и его удаление, установка заново не помогает.

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 11:36

упорно выбрасывает ошибку
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.

Аватар пользователя Dan Dan 11 января 2010 в 12:05

Посмотрите, обновились ли таблицы. System и filefield в частности. Можно ручками смотреть, можно установить модуль schema - он покажет различия между схемами и реальными таблицами.

Аватар пользователя mak-vardugin mak-vardugin 11 января 2010 в 12:25

в модуле schema для filefield показаны 2 таблицы одна я так понимаю реальная, вторая правильная.
Dan - одному мне с этим не разобраться, можно вас попросить о платной консультации.

Аватар пользователя Azerot Azerot 11 января 2010 в 16:54

А если вдумчиво почитать, что пишет и попробовать понять, что не нравится?

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

После чего запустить ту фигню, котрая раньше ругалась - она создаст данные индексы по новой. После чего все грабли должны исчезнуть.

Аватар пользователя Azerot Azerot 11 января 2010 в 21:53

Да, можно вручную из phpMyAdmin
Предварительно сделайте дамп БД на всякий случай и почитайте хелп на саму команду, чтобы понять синтаксис.

Аватар пользователя Azerot Azerot 12 января 2010 в 12:10

А! Ну понятно. Если даже такие элементарные действия вызывают затруднения, тогда действительно, привлекайте специалистов за денежку.

Аватар пользователя mak-vardugin mak-vardugin 12 января 2010 в 23:02

Сайт готовый и к тому же рабочий, опыт чтобы выявлять и исправлять ошибки не достаточен, по этому решил не рисковать. Обратился за помощью к Даниэлю (Den).
Azerot - спасибо за участие, коллега : )