Создатели phpBB до сих пор живут представлениями прошлого тысячелетия

Abdula аватар

Форум phpBB

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


Out of range value for column 'post_id' at row 1 [1264]

Разгадка оказалась простой - оказывается, phpBB до сих до по дефолту поддерживает количество сообщений в базе форума ... не более 16 млн.!
Видимо, программисты как вписали этот лимит в прошлом тысячелетии, так и забыли про него.

Решение проблемы для phpBB версии 3.0.11 простое - нужно выдать четыре команды в консоли MySQL:

  1. ALTER TABLE `phpbb_posts` CHANGE `post_id` `post_id` INT UNSIGNED NOT NULL AUTO_INCREMENT;
  2. ALTER TABLE `phpbb_topics` CHANGE `topic_first_post_id` `topic_first_post_id` INT UNSIGNED NOT NULL DEFAULT '0';
  3. ALTER TABLE `phpbb_topics` CHANGE `topic_last_post_id` `topic_last_post_id` INT UNSIGNED NOT NULL DEFAULT '0';
  4. ALTER TABLE `phpbb_forums` CHANGE `forum_last_post_id` `forum_last_post_id` INT UNSIGNED NOT NULL DEFAULT '0';

и приготовиться терпеливо и долго ждать - выполнение изменения типа поля таблицы post_id заняло около 5 часов.
После этого максимальное число записей благодаря увеличению поля с 3 (MEDIUMINT) до 4 (INT) байтов увеличилось с 16777215 до 4294967295.
Любознательные могут ознакомиться с подробностями здесь.

Надеюсь, что в обозримом будущем снова придется увеличивать это поле - с INT на BIGINT

Одно непонятно - почему разработчики сразу не задали это значение на вменяемое - места, что ли им было жалко?

PS. Не знаю, может мне показалось, но субъективно сайт стал работь вроде немного шустрее - может потому, что процессор 4-байтовые значения обрабатывает быстрее, чем 3-байтовые?

Ваша оценка: Ничего Средняя оценка: 7.3 (9 votes)
RSS-материал