Ошибка с базой

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

Аватар пользователя jason32 jason32 4 сентября 2006 в 11:46

Не знаю, пролетало нет - подскажите? При редактировании некоторых контейнеров - вылетает ошибка
user warning: Duplicate entry '14' for key 1 query: INSERT INTO category_menu_map (nid, mid) VALUES (14, 121) in z:\home\drupal.1\www\includes\database.mysql.inc on line 120.
Плюс к этому отредактированный контейнер выскакивает в главное меню, но ссылаясь при этом на главную, а не туда, куда надо.
В чём трабл понятно - скрипт пытается всунуть запись в базу с первичным ключом, который уже есть в базе( в данном случае с номером 14) - то есть отсутствует проверка на уникальность ключа и записи вставляются через Insert , а не через Update. Есть ли готовое решение этой проблемы или лазить с напильником по коду? Используется последняя версия модуля категорий.
Видимо, вопрос для моих коллег-программистов.

Комментарии

Аватар пользователя jason32 jason32 4 сентября 2006 в 13:38

файл category_menu/category_menu.module из модуля категорий
вместо

function category_menu_insert_mapping($nid, $mid) {
  db_query("INSERT INTO {category_menu_map} (nid, mid) VALUES (%d, %d)", $nid, $mid);  

надо

function category_menu_insert_mapping($nid, $mid) {
        if (category_menu_get_mapping($nid))
        db_query("DELETE FROM {category_menu_map} WHERE nid = %d", $nid);
  db_query("INSERT INTO {category_menu_map} (nid, mid) VALUES (%d, %d)", $nid, $mid);  
}

Ошибка исчезла и перестали пункты в меню вылетать - больше пока ничё не тестил