Migrate a phpBB3 forum to Discourse

Здравствуйте,

Я успешно импортировал свой форум phpBB (v3.2.10) (спасибо @gerhard и другим)…

Ну, почти без проблем :wink: : в темах нет ответов.

Есть какие-то идеи?

Заранее спасибо

1 лайк

Привет @jmbeuken, несколько раз выполните import_phpbb3.sh и проверьте на http://yoursite/sidekiq, завершил ли Sidekiq работу.

3 лайка

Спасибо: всё работает!

2 лайка

Теперь я понял, что регулярные выражения работают только для URL форума.

После конвертации я обнаружил эти предварительно настроенные правила:

/(viewforum.php\?)(?:.*&)?(f=\d+).*/\1\2 работает отлично, но /(viewtopic.php\?)(?:.*&)?(t=\d+).*/\1\2 всегда возвращает ошибку 404, потому что адрес не конвертируется и остаётся в виде https://www.mysite.com/viewtopic.php?t=123.

Почему так? Регулярное выражение выглядит одинаково, и я пробовал с внешними ссылками.

UP! ( :grimacing:)

2 лайка

Похоже, проблема не в регулярном выражении нормализации постоянных ссылок, так как оно работает корректно. У вас есть постоянные ссылки в формате viewtopic.php?t=123 в разделе Администрирование → Настройка → Постоянные ссылки?

2 лайка

Привет, Justin, нет, у меня только те, что вы видите на изображении.

Спасибо

1 лайк

Привет, просто зашел сказать спасибо за этот совет. Я мигрирую довольно большой форум PHPBB 3.2 (около 1,3 ГБ в SQL-дампе) в Discourse и думал, что споткнулся о первое препятствие!

Что именно происходит, если определить new_categories как пустой список, а category_mappings как пустой объект? Есть ли от этого какие-либо негативные последствия?

1 лайк

Эти настройки применяются только при импорте в форум Discourse с существующей структурой категорий.

1 лайк

Здравствуйте,

Я импортировал сайт phpBB3 с 2518 пользователями.
После выполнения скрипта «import_phpbb3.sh» всё кажется стабильным…
Однако я заметил, что есть 1108 пользователей «уровня 0» и 1410 пользователей «уровня 1»: по какому критерию пользователи разделяются?
На следующий день я обнаружил, что осталось только 258 пользователей «уровня 0»: как была проведена «очистка»? Отсутствие сообщений? Отсутствие активности?

Я попытался перенести пароли: к сожалению, возникло много ошибок (имя пользователя совпадает с паролем, длина < 9 и т. д.), и скрипт каждый раз аварийно завершался. Я исправлял это на стороне phpBB3 (удалял пользователя :wink: ) и запускал скрипт снова, но это было слишком утомительно, и я остановился. :roll_eyes:
Может ли быть способ в случае ошибки устанавливать пароль по умолчанию? (Я не знаю Ruby :pensive: )

Заранее спасибо.

1 лайк

Вам нужно добавить код, который проверяет длину пароля и либо удаляет его, либо делает его длиннее 9 символов (минимум на самом деле 8, так что насчёт 9 я не уверен).

2 лайка

Спасибо, @pfaffman.
Извините, я не выразился ясно…
В экземпляре phpBB3 минимальная длина пароля составляла 6 символов, затем я изменил её на 8, когда обновлял phpBB3 несколько лет назад…
Таким образом, возможно, существует множество паролей длиной менее 10 символов (стандартное значение для Discourse).

Я думаю, мы могли бы внести изменения в файл «spec/components/validators/password_validator_spec.rb», но мне трудно разобраться… :anguished:

До связи.

1 лайк

Вы можете попробовать это, но я не уверен, что это сработает, и это сложно сделать так, чтобы изменения не отменились при обновлении. Мой более простой совет — просто не импортировать слишком короткие пароли. Думаю, пользователи всё равно их не вспомнят.

Но, возможно, у кого-то есть другая идея.

1 лайк

Здравствуйте,

при импорте возникла проблема с загрузкой файлов:

4497 / 12442 ( 36.1%)  [1122 items/min]  
Не удалось создать файл загрузки: No such file or directory @ rb_sysopen - /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90
Не удалось загрузить /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90

однако файл существует:

root@gui2:/var/discourse/shared/standalone/import# ll data/files/89_d634760ee03ba0148d7a387a19794f90
-rw-rw-rw- 1 nwz003 48 125552 Mar  6  2012 data/files/89_d634760ee03ba0148d7a387a19794f90

и в файле “shared/standalone/import/settings.yml”:

phpbb_base_dir: /shared/standalone/import/data

есть какие-то идеи?

спасибо

1 лайк

Попробуйте выполнить /shared/import/data в настройках — внутри контейнера каталог /var/discourse/shared/standalone сопоставлен с /shared

3 лайка

Спасибо @justin: это хитрость :slight_smile:

4 лайка

Столкнулся с этим при запуске import_phpbb3.sh на дампе базы данных phpBB 3.0.12 только что:

создание групп пользователей
Не удалось добавить пользователя 1 в группу 11
PG::NotNullViolation: ОШИБКА: значение null в столбце "user_id" отношения "group_users" нарушает ограничение not-null

Оказалось, что в моей базе данных phpbb в таблице phpbb_user_group были «ожидающие» пользователи. (Ожидающие пользователи — это те, кто запросил вступление в группу, но ещё не был одобрен.) Я удалил строки, где user_pending равнялся 1, и импортер смог продолжить работу после этого.

1 лайк

Ещё одно замечание при импорте phpBB 3.0.12: при первом запуске импорта сообщений я вижу огромное количество сообщений вроде этого:

    65427 / 65812 ( 99.4%)  [2238 элементов/мин]  Родительское сообщение 68380 не существует. Пропуск 68382: Shuffling an At Start Stack

(«Shuffling an At Start Stack» — название конкретной темы на моём форуме.)

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

Похоже, что импортеру требуется второй проход (просто запустите import_phpbb3.sh ещё раз) для моей базы данных. Во второй раз все отсутствующие родительские сообщения, кажется, уже существуют, и сообщений об отсутствующих родителях больше нет.

Написать импортеры непросто, как и любые системы, способные успешно возобновлять работу после сбоя, но вам удалось сделать и то, и другое. Браво!

3 лайка

Это говорит о том, что проблема может быть в base.rb или lookup.rb. Я заметил похожую проблему в общем импортере JSON, но думал, что это ошибка в нём. Похоже, что функции поиска не работают. Я предполагаю, что функция создания сообщения не добавляет новые сообщения в структуру, которую используют функции поиска.

Я постараюсь посмотреть на это в ближайшие пару дней.

1 лайк

@pfaffman Импорт, который я сделал, был пробным; я, скорее всего, сделаю как минимум ещё один, так что если у вас есть что-то, что я смогу попробовать через несколько дней, я с радостью протестирую это.

1 лайк

Кажется, @topics и/или @posts не обновляются создателем темы/поста. В моем скрипте я искал TopicCustomField в коде, а не полагался на функции поиска.

Я изучил код и последние коммиты, но явного объяснения не нашел.

1 лайк