Сбросить почтовые идентификаторы до менее чем 64-битного целого

8

Я управляю Wordpress много лет и у меня около 26000 постов.

В какой-то момент мои почтовые идентификаторы превысили 32-битное целое число, и теперь я использую Wordpress в 64-битной системе.

Я вижу сообщения с идентификаторами, такими как 4863166253.

Я хотел бы переключить свой хостинг на маломощный сервер, как Raspberry Pi, который является 32-битным.

Есть ли способ сбросить идентификаторы постов, чтобы они все были ниже 2 миллиардов?

Вы можете прочитать мой отчет об ошибке Wordpress здесь

Спасибо.

Марк Уотерс
источник
Это один из ваших плагинов, который ведет вас туда, я думаю, post_2_post, но это всего лишь предположение. Вам необходимо понять, почему у вас такое большое число (ни одно реальное количество ревизий не приведет вас туда, если только это не будет плагин, создающий их), и только тогда вы сможете начать планировать, как это исправить.
Марк Каплун

Ответы:

5

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

Все операции, которые я предлагаю, должны выполняться на сервере разработки / локальном сервере с резервной копией базы данных, а не на рабочей или исходной базе данных.

Если у вас 26 000 постов, но номер поста равен 4 863 166 253, то существуют миллионы идентификаторов, которые не используются.

Для решения этой проблемы вам необходимо:

Шаг 1

  • удалить неиспользуемые почтовые идентификаторы. (удаленные сообщения, исправления)
  • удаленные сироты публикуют мета-записи
  • удалить записи отношения таксономии сирот

Для области есть плагины, но это можно сделать с помощью простых необработанных запросов SQL.

Шаг 2

Сбросьте идентификаторы записей, изменив их, чтобы они начинали с 1. Это можно сделать с помощью комбинации PHP + MySQL: если вы извлекаете столбец идентификатора записи в виде массива (например, через $wpdb->get_col()), ключи массива (увеличенные на 1) будут новыми идентификаторами сообщений для сообщения, чей текущий идентификатор находится в значениях массива.

Обратите внимание, что идентификаторы сообщений должны быть изменены в:

  • почтовый стол
  • таблица таксономических отношений
  • опубликовать мета таблицу

Я предлагаю вам запустить такую ​​процедуру для подмножеств постов, используя постраничные результаты, а не для тысяч строк в целом.

Шаг 3

Установите AUTO_INCREMENTиндекс для таблицы сообщений на количество сообщений + 1.

Выполнено

В конце этого процесса ваш более высокий почтовый идентификатор должен легко находиться в пределах 32-битного целого числа.

Предотвращение пост-лимит достигнут снова

  • Отключить публикацию ревизий или ограничить их количество (см. Кодекс ).

  • Переместите старые сообщения (от 2 лет до 5 лет) в отдельный блог в многосайтовой среде, например, site1-archive.example.comдля сообщений в site1.example.com.

    Это можно сделать с помощью экспортера WordPress с опцией диапазона дат.

    Если вы планируете сделать это, будет лучше, если вы сделаете это перед сбросом идентификаторов постов (шаг № 2 выше), таким образом оба блога могут иметь более низкий идентификатор поста.

    Конечно, после этого вы должны также установить способ перенаправления заархивированных почтовых URL-адресов на новые URL-адреса.

Gmazzap
источник