Я уже что только не пробовала, но никак не могу решить свою проблему. У меня какие-то глюки!
Я пытаюсь добавить ноду в сайт, все идет нормально, но когда я нажимаю ОТПРАВИТЬ, вместо моей ноды, появляется другая, одна из уже давно мною вставленных и вот такое сообщение:
* user warning: Duplicate entry '3119-3120' for key 1 query: INSERT INTO node (nid, vid, title, type, uid, status, created, changed, comment, promote, sticky) VALUES (3119, 3120, 'АВАРИЙНО-СПАСАТЕЛЬНЫЕ РАБОТЫ. 24 ДЕКАБРЯ', 'russia', 1, 1, 1198540812, 1198840931, 0, 1, 0) in x:\home\blacksea.ewnc.org\www\includes\database.mysql.inc on line 172.
* user warning: Duplicate entry '3120' for key 1 query: INSERT INTO node_revisions (nid, vid, title, body, teaser, timestamp, uid, format, log) VALUES (3119, 3120, 'АВАРИЙНО-СПАСАТЕЛЬНЫЕ РАБОТЫ. 24 ДЕКАБРЯ', 'p{margin: 0 !important;}\r\n"МОРСКОЙ БЮЛЛЕТЕНЬ"\r\n
Комментарии
может такая нода уже есть? просто мускул то говорит "user warning: Duplicate entry"
ИМХО, такое может быть только если хакалось ядро
Понимаю, что вряд ли это так, но...
Не обязательно. Такое вполне возможно также при ручной работе с БД (если ноды каким-нибудь сторонним скриптом создавать, например). Думаю, что надо проверить в БД таблицу 'sequences', а именно поля 'last_node_nid' и 'last_revision_vid' (пишу по памяти, но вроде бы так называются). Так вот, проверить эти поля на предмет соответствия чисел в них номеру последней ноды на сайте - они (числа в полях) должны быть больше. Если они меньше - увеличить.
Я сталкивался с такой же неприятностью, когда самописным скриптом импортировал материалы с прошлой версии сайта - писал в таблицы нодов, а таблицу 'sequences' не обновил (забыл или не знал). Все бы и хорошо, но при создании новых нод уже средствами друпала вылезла такая же ошибка.
согласен что может быть при ручной, но судя по ее описанию, это не ручная вставка в таблицу node
А как можно попасть в эту самую базу данных? Я совершенно не знаю как это можно сделать?
Мне помогло!
Попробовал именно это.
Изменил значения и все заработало.
Спасибо.
То, что Duplicate и on line 172, наталкивает на мысль, что таблица испорчена (node, node_revisions?). phpMyAdmin должен восстановить.
phpmyadmin на хостинге ищите. про консоль объяснять думаю не имеет смысла.
Из панели управления зайдите в phpMyAdmin (возможно у Вашего хостера это выполняется иначе).
В таблице `sequences`, выполняющей функцию счетчика, увидите ID's, и, измените их в соответствии с таблицами, из которых они взяты.
Например: в таблице `node_revisions` последняя нода имеет ID=3120, следовательно, в таблице `sequences` node_revisions_vid должна иметь ID=3120 (ну, и node_nid естественно тоже).
Подобным образом проверьте все ID's.
P.S. Но даже если Вы будете просто продолжать наполнять сайт, то все "устаканится" само после устранения дублей.
У меня странная вешь!
В трех таблицах получается одинаковое значение! Причем это одна и та же нода везде! А май админ не позволяет их вписывать в секьюенсе!
Что делать?
а поля автоинкрементные?
Не вражайтесь, пожалуйста.... Я не знаю. И не знаю как с этим быть, но сдается мне , что это неправильно...
автоинкрементные поля это те у которых в колонке "дополнительно" написано auto_increment. Это поля значения которых заполняются автоматически.
И что это значит? А как мне быть с посторяющимися значениями в полях разных таблиц?
Прошу простить, но если Вы не имеете административного доступа
- "А май админ не позволяет их вписывать в секьюенсе!"
то зачем что-либо обсуждать?
Нет, вы меня не так поняли. Все он позваляет. Кроме одного.
Я ж сказала, что у меня в нескольких строках секьюэнс после проверки оказывается одно и то же значение - 1455. В одну я вбила. Стала вбивать в следующую - он меня обругал... Пришлось все оставить как есть.
Спроси админа: является ли поле nid в вашей базе в таблице node автоинкрементным?
сброс автоинкремента обычно происходит когда вы делаете базу в новой версии mysql, потом скидываете в старую...
Я админ и есть.... Что в таком случае можно сделать. Ну в принципе все заработало. Только этот нюанс меня беспокоит..
если все заработало, то сделайте бэкап и ничего не трогайте
У меня с этим делом еще одна проблема открылась - я не могу создать новую категорию. Начинаю создавать, а он выдает аналогичную ошибку и ничего не происходит....
Когда я пытаюсь создать категорию с "нуля", то есть сначала создаю, а потом ее уже присваиваю какому-нибудь словарю, то появляется еще и вот такая надпись -
user warning: Duplicate entry '3139-19' for key 1 query: UPDATE node SET nid = 3139, vid = 19, title = '2008', type = 'category_cat', uid = 1, status = 1, created = 1200144117, changed = 1200144460, comment = 0, promote = 0, sticky = 0 WHERE nid = 3139 in x:\home\blacksea.ewnc.org\www\includes\database.mysql.inc on line 172.
Elodia я так начинаю подозревать, что вы забекапили базу дрюпал в версии mysql 4, затем востановили её в mysql 3?
если не так, то недавное базокопательство выяснило: таблица sequences хранить последние номера соответствующих таблиц, у вас получается строки node_nid, сверьте максимальные значения с node.nid...
Да, я последовала вашему совету. Но столкнулась с проблемой. У меня снова в двух разных полях - node и node revision получается одно и то же значение - 140, которое я не могу занести в два поля одновременно. И потому приходится в одном из них оставлять неверное значение. И ничего не работает.
sequences:
node_nid 140
node_revisions_vid 140
Все сделала! Все получилось вставить. Но не помогло. Ноды вставлять отказывается выдает по пол листа ругани на Дубликат Энтри.
Что далать?
Я тоже импортировал данные из другой базы... и, о ужас, стали появляться эти ошибки. Спасибо за рецепт, помогло категорически.
хм, а я пропустил этот пост, судя по молчанию автора проблема походу исправилась...
Честно говоря, не исправилась, просто ноды добавляются, предупреждение выдает, но я с этим ничего не делаю, ибо не могу...
походу на месте разбираться нужно...
РЕШЕНИЕ ПРОБЛЕМЫ:
1)Заходите в панель PHPMyadmin.
2)Идете в таблицу drupal_node, сортируете по столбцу nid, смотрите самый большой nid, идете в таблицу sequence и вставляете в поле nid число, которое больше, чем nid из таблицы drupal_node.
3)С таблицей drupal_node_comment_statistics проделываете то же самое.
И будет Вам счастье... (Скрины для помощи прикрепляю)