С помощью sql импортировал node и node_revision.
В таблице nid установлен autoincrement в последнее значение, например в 78.
Все материалы отображаются корректно, но при попытке добавить материал через drupal ругается что nid=6 уже есть. Где зашито текущее значение nid? Как его изменить?
Комментарии
Кэш и историю чистил. Не помогает.
посмотри таблицу node_counter, может там.
Капелька ругается на три таблицы node, node_counter, node_revisions. В принципе правильно ругается - он пытается вставить nid=6 в таблицу с последним nid=78. В node nid=auto_increment=79. Вопрос - откуда он берёт текущий nid=6?
оффтоп - перенос ссылочной целостности базы на клиента это моветон, имхо.
Это вы еще с пятеркой не работали там вообще таблица {sequences} есть для ключей,
Ну а по вашему случаю, могу предположить, что все таки что то, некоректно импортировали,
(посмотрел node_save, вроде ничего там "криминального" нет), ну и как предположение, сторонний модуль, перехватывающий node_api
Вот залез написать решение а тут уже о нём упоминается.
Именно странная таблица {sequences} - "последовательности" хранит текущее значение для полей auto_incrament в том числе и для node.nid
Поменял на большее всё заработало.
Импортировал из 6-ки в 5-ку поскольку 6-ка сырая и модули ещё сырые, а сайт сдавать пора уже. Утомился вылавливать блох.
В базе много избыточных таблиц, видимо это связано с необходимостью оптимизации скорости запросов на высоконагруженных сайтах.
В любом случае непонятно почему и как функция db_next_id({node}_nid) долазит до {sequences} и почему это нигде не отражено? Есть там конструкция SELECT nextval... И как оно устанавливается? По тригеру на ноде?
Одним слово ссылочная целостность на уровне базы в капельке понятие неоднозначное.
Всем спасибо за участие.
Так в 6-ке же нет {sequences} таблицы. А топик вроде про 6-ку был.