Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как изменить ID у новости (с 130 на 127)?

Как изменить ID у новости (с 130 на 127)?


     15.09.2016    Все вопросы » MySQL    3669

вопрос
Есть новость - site.ru/category/id130-nazvanie-novosti.html
Изменить на site.ru/category/id127-nazvanie-novosti.html

Ответил: irrwisch


Выполните SQL запрос

UPDATE `dle_post` SET `id` = '127' WHERE `dle_post`.`id` = 130;

17 комментариев

JEFF
Юзер

JEFF - 15 сентября 2016 11:51 -

а 127 есть? а то перезапишет ее

irrwisch
Юзер

irrwisch - 15 сентября 2016 12:31 -

нету, человек её удалил

irrwisch
Юзер

irrwisch - 15 сентября 2016 12:36 -

нету, человек её удалил

erfesto
Юзер

erfesto - 15 сентября 2016 12:39 -

Проблема сейчас в том, что надо заполнить id 127, я пока что ничего не перезаписывал. То есть, есть удаленная новость с id 127, как в mysql в dle_post добавть новость с id 127?

erfesto
Юзер

erfesto - 15 сентября 2016 12:50 -

id127 как-то надо заполнить

JEFF
Юзер

JEFF - 15 сентября 2016 12:43 -

я думаю что id127 которую удалили, на самом деле может остаться там, но быть скрыта на самом сайте как удаленная, для этого над зайти в саму БД и посмотреть по айдишкам новости

erfesto
Юзер

erfesto - 15 сентября 2016 12:56 -

Я зашел в dle_post и там отсутсвует новость с id 127, а все остальные присутсвуют

erfesto
Юзер

erfesto - 15 сентября 2016 13:01 -


скажите, а если нажать копировать и потом немного изменить новость, чтобы не дублировать и указать id 127 (удаленной новости), что будет?

erfesto
Юзер

erfesto - 15 сентября 2016 13:02 -


и что выбрать тут внизу?

JEFF
Юзер

JEFF - 15 сентября 2016 13:02 -

по идеи то что вам ответили в главном ответе, это и есть дублирование

erfesto
Юзер

erfesto - 15 сентября 2016 13:04 -

irrwisch в ЛС мне ответил, что счетчик всё-равно будет к id +1 добавлять) то есть, если предположить надо заполнить место под id 127 и тогда всё будет хорошо

irrwisch
Юзер

irrwisch - 15 сентября 2016 13:24 -

Это не дублирование, это замена значения поля id с одного на другое.

Proff
Юзер

Proff - 15 сентября 2016 13:42 -

Хера себе сколько комментов... А ничего, что у DLE id не только в _post прописывается? Как минимум таблицы комментов, картинок, _extras - это так на вскидку.

erfesto
Юзер

erfesto - 15 сентября 2016 13:48 -

Блин, расстроили меня( а мой метод к каким последствиям ведет? (Там где я картинки добавлял)

irrwisch
Юзер

irrwisch - 15 сентября 2016 14:08 -

Ну да, это я упустил из виду, надо ещё и второй запрос выполнить

UPDATE `dle_post_extras` SET `eid` = '127' WHERE `dle_post_extras`.`eid` = 130;

erfesto
Юзер

erfesto - 15 сентября 2016 14:35 -

Вот решение:
Технически это сделать можно, но практически это необязательно, так как в любом случае ID для новости присваивается движком один раз, и даже если новость удалить, этот ID больше не будет использоваться.

Чтобы заполнить "пустое" место в Бд, вы можете скопировать новости так, как вы написали, но для начала изменить в Базе данных можно только ID.

Затем, тоже самое нужно сделать в базе данных dle_post_extras, скопировать строку, и указать новый для неё новый news_id. (это новый ID, который вы указали для предыдущей новости), и, если хотите, новый ID тоже. (Все ID должны быть уникальными).

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

Движок всегда будет использовать в качестве новых ID ID последней добавленной движком новости + 1. Даже если Вы удалите все новости.

irrwisch
Юзер

irrwisch - 15 сентября 2016 14:59 -

Цитата: erfesto
Движок всегда будет использовать в качестве новых ID ID последней добавленной движком новости + 1. Даже если Вы удалите все новости.

Немного не верно, DLE к присвоению id не имеет никакого отношения, у каждой таблицы есть "AUTO_INCREMENT" которому можно назначить нужное значение (допустим можно назначить значение 1000 и тогда первая добавленная новость после изменения значения AUTO_INCREMENT будет иметь id 1000)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх