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

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


     15.09.2016    MySQL    550

вопрос
Есть новость - 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
2

69 | 6

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

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

irrwisch
49

400 | 154

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

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

irrwisch
49

400 | 154

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

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

erfesto
15

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

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

erfesto
15

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

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

JEFF
2

69 | 6

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

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

erfesto
15

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

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

erfesto
15

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


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

erfesto
15

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


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

JEFF
2

69 | 6

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

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

erfesto
15

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

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

irrwisch
49

400 | 154

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

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

Proff
1

127 | 28

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

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

erfesto
15

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

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

irrwisch
49

400 | 154

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

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

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

erfesto
15

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

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

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

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

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

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

irrwisch
49

400 | 154

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

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

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

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

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