Проблема с добавлением нод

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

Аватар пользователя Elodia Elodia 28 декабря 2007 в 14:37

Я уже что только не пробовала, но никак не могу решить свою проблему. У меня какие-то глюки!
Я пытаюсь добавить ноду в сайт, все идет нормально, но когда я нажимаю ОТПРАВИТЬ, вместо моей ноды, появляется другая, одна из уже давно мною вставленных и вот такое сообщение:
* 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

Комментарии

Аватар пользователя magway magway 28 декабря 2007 в 15:58

Quote:
ИМХО, такое может быть только если хакалось ядро :)))

Не обязательно. Такое вполне возможно также при ручной работе с БД (если ноды каким-нибудь сторонним скриптом создавать, например). Думаю, что надо проверить в БД таблицу 'sequences', а именно поля 'last_node_nid' и 'last_revision_vid' (пишу по памяти, но вроде бы так называются). Так вот, проверить эти поля на предмет соответствия чисел в них номеру последней ноды на сайте - они (числа в полях) должны быть больше. Если они меньше - увеличить.
Я сталкивался с такой же неприятностью, когда самописным скриптом импортировал материалы с прошлой версии сайта - писал в таблицы нодов, а таблицу 'sequences' не обновил (забыл или не знал). Все бы и хорошо, но при создании новых нод уже средствами друпала вылезла такая же ошибка.

Аватар пользователя andreylishishin andreylishishin 7 марта 2011 в 11:05

magway wrote:
Quote:
ИМХО, такое может быть только если хакалось ядро :)))

Не обязательно. Такое вполне возможно также при ручной работе с БД (если ноды каким-нибудь сторонним скриптом создавать, например). Думаю, что надо проверить в БД таблицу 'sequences', а именно поля 'last_node_nid' и 'last_revision_vid' (пишу по памяти, но вроде бы так называются). Так вот, проверить эти поля на предмет соответствия чисел в них номеру последней ноды на сайте - они (числа в полях) должны быть больше. Если они меньше - увеличить.
Я сталкивался с такой же неприятностью, когда самописным скриптом импортировал материалы с прошлой версии сайта - писал в таблицы нодов, а таблицу 'sequences' не обновил (забыл или не знал). Все бы и хорошо, но при создании новых нод уже средствами друпала вылезла такая же ошибка.

Мне помогло!
Попробовал именно это.
Изменил значения и все заработало.
Спасибо.

Аватар пользователя RISK RISK 28 декабря 2007 в 15:59

То, что Duplicate и on line 172, наталкивает на мысль, что таблица испорчена (node, node_revisions?). phpMyAdmin должен восстановить.

Аватар пользователя mensh mensh (не проверено) 28 декабря 2007 в 20:40

Из панели управления зайдите в phpMyAdmin (возможно у Вашего хостера это выполняется иначе).
В таблице `sequences`, выполняющей функцию счетчика, увидите ID's, и, измените их в соответствии с таблицами, из которых они взяты.
Например: в таблице `node_revisions` последняя нода имеет ID=3120, следовательно, в таблице `sequences` node_revisions_vid должна иметь ID=3120 (ну, и node_nid естественно тоже).
Подобным образом проверьте все ID's.

P.S. Но даже если Вы будете просто продолжать наполнять сайт, то все "устаканится" само после устранения дублей.

Аватар пользователя Elodia Elodia 28 декабря 2007 в 21:23

У меня странная вешь!

В трех таблицах получается одинаковое значение! Причем это одна и та же нода везде! А май админ не позволяет их вписывать в секьюенсе!
Что делать?

Аватар пользователя Elodia Elodia 29 декабря 2007 в 12:37

Не вражайтесь, пожалуйста.... Я не знаю. И не знаю как с этим быть, но сдается мне , что это неправильно...

Аватар пользователя player player 29 декабря 2007 в 14:11

автоинкрементные поля это те у которых в колонке "дополнительно" написано auto_increment. Это поля значения которых заполняются автоматически.

Аватар пользователя mensh mensh (не проверено) 29 декабря 2007 в 16:29

Прошу простить, но если Вы не имеете административного доступа
- "А май админ не позволяет их вписывать в секьюенсе!"
то зачем что-либо обсуждать?

Аватар пользователя Elodia Elodia 29 декабря 2007 в 23:07

Нет, вы меня не так поняли. Все он позваляет. Кроме одного.
Я ж сказала, что у меня в нескольких строках секьюэнс после проверки оказывается одно и то же значение - 1455. В одну я вбила. Стала вбивать в следующую - он меня обругал... Пришлось все оставить как есть.

Аватар пользователя Nikit Nikit 4 января 2008 в 7:45

Спроси админа: является ли поле nid в вашей базе в таблице node автоинкрементным?
сброс автоинкремента обычно происходит когда вы делаете базу в новой версии mysql, потом скидываете в старую...

Аватар пользователя Elodia Elodia 11 января 2008 в 19:42

Я админ и есть.... Что в таком случае можно сделать. Ну в принципе все заработало. Только этот нюанс меня беспокоит..

Аватар пользователя Elodia Elodia 12 января 2008 в 16:34

У меня с этим делом еще одна проблема открылась - я не могу создать новую категорию. Начинаю создавать, а он выдает аналогичную ошибку и ничего не происходит....
Когда я пытаюсь создать категорию с "нуля", то есть сначала создаю, а потом ее уже присваиваю какому-нибудь словарю, то появляется еще и вот такая надпись -

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.

Аватар пользователя Nikit Nikit 14 января 2008 в 3:57

Elodia я так начинаю подозревать, что вы забекапили базу дрюпал в версии mysql 4, затем востановили её в mysql 3?
если не так, то недавное базокопательство выяснило: таблица sequences хранить последние номера соответствующих таблиц, у вас получается строки node_nid, сверьте максимальные значения с node.nid...

Аватар пользователя Elodia Elodia 14 января 2008 в 17:37

Да, я последовала вашему совету. Но столкнулась с проблемой. У меня снова в двух разных полях - node и node revision получается одно и то же значение - 140, которое я не могу занести в два поля одновременно. И потому приходится в одном из них оставлять неверное значение. И ничего не работает.

Аватар пользователя Elodia Elodia 15 января 2008 в 18:10

Все сделала! Все получилось вставить. Но не помогло. Ноды вставлять отказывается выдает по пол листа ругани на Дубликат Энтри.
Что далать?

Аватар пользователя rashaverak rashaverak 22 октября 2008 в 0:27

"magway" wrote:
Не обязательно. Такое вполне возможно также при ручной работе с БД (если ноды каким-нибудь сторонним скриптом создавать, например). Думаю, что надо проверить в БД таблицу 'sequences', а именно поля 'last_node_nid' и 'last_revision_vid' (пишу по памяти, но вроде бы так называются). Так вот, проверить эти поля на предмет соответствия чисел в них номеру последней ноды на сайте - они (числа в полях) должны быть больше. Если они меньше - увеличить.
Я сталкивался с такой же неприятностью, когда самописным скриптом импортировал материалы с прошлой версии сайта - писал в таблицы нодов, а таблицу 'sequences' не обновил (забыл или не знал). Все бы и хорошо, но при создании новых нод уже средствами друпала вылезла такая же ошибка.

Я тоже импортировал данные из другой базы... и, о ужас, стали появляться эти ошибки. Спасибо за рецепт, помогло категорически.

Аватар пользователя Elodia Elodia 24 октября 2008 в 17:32

Честно говоря, не исправилась, просто ноды добавляются, предупреждение выдает, но я с этим ничего не делаю, ибо не могу...

Аватар пользователя andreylishishin andreylishishin 23 февраля 2011 в 12:05

РЕШЕНИЕ ПРОБЛЕМЫ:

1)Заходите в панель PHPMyadmin.
2)Идете в таблицу drupal_node, сортируете по столбцу nid, смотрите самый большой nid, идете в таблицу sequence и вставляете в поле nid число, которое больше, чем nid из таблицы drupal_node.
3)С таблицей drupal_node_comment_statistics проделываете то же самое.

И будет Вам счастье... (Скрины для помощи прикрепляю)