Migrate a vBulletin 4 forum to Discourse

Не волнуйся, Джей, я просто благодарен, что у меня есть кто-то, кто немного поддержит меня :smiley:

Единственное, что меня беспокоит, — это риск сделать изменение, из-за которого ни одно вложение не будет загружено, но все будут помечены как завершенные в миграции, и мне придется начинать всё сначала.

Случайно ли знаешь, для чего конкретно используется свойство short_url в Discourse? Можно ли изменить его по своему усмотрению, или оно должно соответствовать объекту для связывания постов и вложений на более позднем этапе?

2 лайка

short_url — это функция в модели Upload. Если она не работает, это означает, что объекта Upload не существует. Думаю, следующим шагом стоит проверить, возвращается ли upload из find_upload. Возможно, он действительно не находится.

2 лайка

Вот результат

Я изменил идентифицирующие данные (имя файла и URL-адрес корзины S3)

#418 работает, #419 не работает, кроме различий в данных свойств, всё выглядит нормально, верно?

В имени файла для #419 используется нижнее подчёркивание, а в #418 — нет, но ранее встречались другие имена файлов с нижним подчёркиванием, и всё работало нормально.

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

2 лайка

Предыдущее сообщение было ошибочным, @pfaffman был прав в своих предположениях.

Из-за добавленной мной логики скрипт упал на собственном коде, поэтому последним отображённым элементом был последний успешно обработанный.

Проблемный элемент имел все свойства, установленные в nil, кроме имени файла.

Простая проверка на то, что свойство sha1 равно nil, решила проблему.

Огромное спасибо @pfaffman <3

3 лайка

Это история моей жизни!

2 лайка

Извините, что снова беспокою вас, pfaffman, но это нормально?

3679343 / 3550728 (103.6%)

Кажется, при загрузке вложения показатель превысил 100%?

1 лайк

Это означает, что запрос, получающий общее количество вложений, и запрос, получающий сами вложения, различны. Скорее всего, это означает, что количество вложений указано неверно. Если же процесс не прекращается, то что-то явно не так. :wink:

1 лайк

Попытался повторить отличный обзор шагов от @Jack51.

Однако (при попытке выполнить это в среде DigitalOcean) шаг с MariaDB не удаётся… следуя этим инструкциям (используя версию 10.5 вместо 10.3), служба MySQL не определяется после установки.

Вероятно, это связано с тем, что пакет apt-utils не был установлен, но также выводится ошибка:
invoke-rc.d: policy-rc.d запретил выполнение команды restart.

Не уверен, как действовать дальше.

Редактирование: пересобрал Discourse, убедился, что apt-utils установлен заранее… всё равно получаю ту же ошибку: не удаётся запустить сервер MariaDB.

# apt-get update && apt-get install mariadb-server mariadb-client libmariadbd-dev
Hit:1 http://deb.debian.org/debian bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye-updates InRelease                                                                                                            
Hit:3 http://deb.debian.org/debian bullseye-backports InRelease                                                                                                          
Hit:4 http://security.debian.org/debian-security bullseye-security InRelease                                                                                             
Hit:5 https://dl.yarnpkg.com/debian stable InRelease                                                                                                                     
Hit:6 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease                                                                                  
Hit:7 https://deb.nodesource.com/node_16.x bullseye InRelease
Чтение списков пакетов... Готово
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие дополнительные пакеты будут установлены:
  galera-4 iproute2 libaio1 libatm1 libbpf0 libcgi-fast-perl libcgi-pm-perl libclone-perl libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libelf1
  libencode-locale-perl libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl
  libio-html-perl liblwp-mediatypes-perl libmariadb-dev libmariadb3 libmariadbd19 libmnl0 libsnappy1v5 libterm-readkey-perl libtimedate-perl liburi-perl libxtables12
  lsof mariadb-client-10.5 mariadb-client-core-10.5 mariadb-common mariadb-server-10.5 mariadb-server-core-10.5 mysql-common
Рекомендуемые пакеты:
  iproute2-doc libmldbm-perl libnet-daemon-perl libsql-statement-perl libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx mariadb-test netcat-openbsd
Следующие НОВЫЕ пакеты будут установлены:
  galera-4 iproute2 libaio1 libatm1 libbpf0 libcgi-fast-perl libcgi-pm-perl libclone-perl libconfig-inifiles-perl libdbd-mariadb-perl libdbi-perl libelf1
  libencode-locale-perl libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl
  libio-html-perl liblwp-mediatypes-perl libmariadb-dev libmariadb3 libmariadbd-dev libmariadbd19 libmnl0 libsnappy1v5 libterm-readkey-perl libtimedate-perl liburi-perl
  libxtables12 lsof mariadb-client mariadb-client-10.5 mariadb-client-core-10.5 mariadb-common mariadb-server mariadb-server-10.5 mariadb-server-core-10.5 mysql-common
Обновлено 0 пакетов, установлено 42 новых пакетов, для удаления — 0, не обновлено 0.
Необходимо получить 28,9 МБ архивов.
После этой операции будет использовано дополнительно 227 МБ дискового пространства.
Продолжить? [Y/n] y
Получение:1 http://deb.debian.org/debian bullseye/main amd64 mysql-common all 5.8+1.0.7 [7,464 Б]
Получение:2 http://deb.debian.org/debian bullseye/main amd64 mariadb-common all 1:10.5.15-0+deb11u1 [36,7 КБ]
Получение:3 http://deb.debian.org/debian bullseye/main amd64 galera-4 amd64 26.4.11-0+deb11u1 [804 КБ]
Получение:4 http://deb.debian.org/debian bullseye/main amd64 libelf1 amd64 0.183-1 [165 КБ]
Получение:5 http://deb.debian.org/debian bullseye/main amd64 libbpf0 amd64 1:0.3-2 [98,3 КБ]
Получение:6 http://deb.debian.org/debian bullseye/main amd64 libmnl0 amd64 1.0.4-3 [12,5 КБ]
Получение:7 http://deb.debian.org/debian bullseye/main amd64 libxtables12 amd64 1.8.7-1 [45,1 КБ]
Получение:8 http://deb.debian.org/debian bullseye/main amd64 iproute2 amd64 5.10.0-4 [930 КБ]
Получение:9 http://deb.debian.org/debian bullseye/main amd64 libdbi-perl amd64 1.643-3+b1 [780 КБ]
Получение:10 http://deb.debian.org/debian bullseye/main amd64 lsof amd64 4.93.2+dfsg-1.1 [319 КБ]
Получение:11 http://deb.debian.org/debian bullseye/main amd64 libconfig-inifiles-perl all 3.000003-1 [52,1 КБ]
Получение:12 http://deb.debian.org/debian bullseye/main amd64 libmariadb3 amd64 1:10.5.15-0+deb11u1 [176 КБ]
Получение:13 http://deb.debian.org/debian bullseye/main amd64 mariadb-client-core-10.5 amd64 1:10.5.15-0+deb11u1 [783 КБ]
Получение:14 http://deb.debian.org/debian bullseye/main amd64 mariadb-client-10.5 amd64 1:10.5.15-0+deb11u1 [1,509 КБ]
Получение:15 http://deb.debian.org/debian bullseye/main amd64 libaio1 amd64 0.3.112-9 [12,5 КБ]
Получение:16 http://deb.debian.org/debian bullseye/main amd64 libsnappy1v5 amd64 1.1.8-1 [17,9 КБ]
Получение:17 http://deb.debian.org/debian bullseye/main amd64 mariadb-server-core-10.5 amd64 1:10.5.15-0+deb11u1 [6,689 КБ]
Получение:18 http://deb.debian.org/debian bullseye/main amd64 mariadb-server-10.5 amd64 1:10.5.15-0+deb11u1 [4,260 КБ]
Получение:19 http://deb.debian.org/debian bullseye/main amd64 libatm1 amd64 1:2.5.1-4 [71,3 КБ]
Получение:20 http://deb.debian.org/debian bullseye/main amd64 libhtml-tagset-perl all 3.20-4 [13,0 КБ]
Получение:21 http://deb.debian.org/debian bullseye/main amd64 liburi-perl all 5.08-1 [90,6 КБ]
Получение:22 http://deb.debian.org/debian bullseye/main amd64 libhtml-parser-perl amd64 3.75-1+b1 [105 КБ]
Получение:23 http://deb.debian.org/debian bullseye/main amd64 libcgi-pm-perl all 4.51-1 [224 КБ]
Получение:24 http://deb.debian.org/debian bullseye/main amd64 libfcgi0ldbl amd64 2.4.2-2 [26,1 КБ]
Получение:25 http://deb.debian.org/debian bullseye/main amd64 libfcgi-perl amd64 0.79+ds-2 [27,6 КБ]
Получение:26 http://deb.debian.org/debian bullseye/main amd64 libcgi-fast-perl all 1:2.15-1 [12,1 КБ]
Получение:27 http://deb.debian.org/debian bullseye/main amd64 libclone-perl amd64 0.45-1+b1 [15,4 КБ]
Получение:28 http://deb.debian.org/debian bullseye/main amd64 libdbd-mariadb-perl amd64 1.21-3 [110 КБ]
Получение:29 http://deb.debian.org/debian bullseye/main amd64 libencode-locale-perl all 1.05-1.1 [13,2 КБ]
Получение:30 http://deb.debian.org/debian bullseye/main amd64 libfcgi-bin amd64 2.4.2-2 [12,9 КБ]
Получение:31 http://deb.debian.org/debian bullseye/main amd64 libhtml-template-perl all 2.97-1.1 [66,2 КБ]
Получение:32 http://deb.debian.org/debian bullseye/main amd64 libtimedate-perl all 2.3300-2 [39,3 КБ]
Получение:33 http://deb.debian.org/debian bullseye/main amd64 libhttp-date-perl all 6.05-1 [10,4 КБ]
Получение:34 http://deb.debian.org/debian bullseye/main amd64 libio-html-perl all 1.004-2 [16,1 КБ]
Получение:35 http://deb.debian.org/debian bullseye/main amd64 liblwp-mediatypes-perl all 6.04-1 [19,9 КБ]
Получение:36 http://deb.debian.org/debian bullseye/main amd64 libhttp-message-perl all 6.28-1 [79,6 КБ]
Получение:37 http://deb.debian.org/debian bullseye/main amd64 libmariadb-dev amd64 1:10.5.15-0+deb11u1 [185 КБ]
Получение:38 http://deb.debian.org/debian bullseye/main amd64 libmariadbd19 amd64 1:10.5.15-0+deb11u1 [4,917 КБ]
Получение:39 http://deb.debian.org/debian bullseye/main amd64 libmariadbd-dev amd64 1:10.5.15-0+deb11u1 [6,085 КБ]
Получение:40 http://deb.debian.org/debian bullseye/main amd64 libterm-readkey-perl amd64 2.38-1+b2 [27,8 КБ]
Получение:41 http://deb.debian.org/debian bullseye/main amd64 mariadb-client all 1:10.5.15-0+deb11u1 [35,2 КБ]
Получение:42 http://deb.debian.org/debian bullseye/main amd64 mariadb-server all 1:10.5.15-0+deb11u1 [35,3 КБ]
Получено 28,9 МБ за 0 с (124 МБ/с)
Извлечение шаблонов из пакетов: 100%
Предварительная настройка пакетов ...
Выбор ранее не выбранного пакета mysql-common.
(Чтение базы данных ... на данный момент установлено 38903 файлов и каталогов.)
Подготовка к распаковке .../00-mysql-common_5.8+1.0.7_all.deb ...
Распаковка mysql-common (5.8+1.0.7) ...
Выбор ранее не выбранного пакета mariadb-common.
Подготовка к распаковке .../01-mariadb-common_1%3a10.5.15-0+deb11u1_all.deb ...
Распаковка mariadb-common (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета galera-4.
Подготовка к распаковке .../02-galera-4_26.4.11-0+deb11u1_amd64.deb ...
Распаковка galera-4 (26.4.11-0+deb11u1) ...
Выбор ранее не выбранного пакета libelf1:amd64.
Подготовка к распаковке .../03-libelf1_0.183-1_amd64.deb ...
Распаковка libelf1:amd64 (0.183-1) ...
Выбор ранее не выбранного пакета libbpf0:amd64.
Подготовка к распаковке .../04-libbpf0_1%3a0.3-2_amd64.deb ...
Распаковка libbpf0:amd64 (1:0.3-2) ...
Выбор ранее не выбранного пакета libmnl0:amd64.
Подготовка к распаковке .../05-libmnl0_1.0.4-3_amd64.deb ...
Распаковка libmnl0:amd64 (1.0.4-3) ...
Выбор ранее не выбранного пакета libxtables12:amd64.
Подготовка к распаковке .../06-libxtables12_1.8.7-1_amd64.deb ...
Распаковка libxtables12:amd64 (1.8.7-1) ...
Выбор ранее не выбранного пакета iproute2.
Подготовка к распаковке .../07-iproute2_5.10.0-4_amd64.deb ...
Распаковка iproute2 (5.10.0-4) ...
Выбор ранее не выбранного пакета libdbi-perl:amd64.
Подготовка к распаковке .../08-libdbi-perl_1.643-3+b1_amd64.deb ...
Распаковка libdbi-perl:amd64 (1.643-3+b1) ...
Выбор ранее не выбранного пакета lsof.
Подготовка к распаковке .../09-lsof_4.93.2+dfsg-1.1_amd64.deb ...
Распаковка lsof (4.93.2+dfsg-1.1) ...
Выбор ранее не выбранного пакета libconfig-inifiles-perl.
Подготовка к распаковке .../10-libconfig-inifiles-perl_3.000003-1_all.deb ...
Распаковка libconfig-inifiles-perl (3.000003-1) ...
Выбор ранее не выбранного пакета libmariadb3:amd64.
Подготовка к распаковке .../11-libmariadb3_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка libmariadb3:amd64 (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета mariadb-client-core-10.5.
Подготовка к распаковке .../12-mariadb-client-core-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка mariadb-client-core-10.5 (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета mariadb-client-10.5.
Подготовка к распаковке .../13-mariadb-client-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка mariadb-client-10.5 (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета libaio1:amd64.
Подготовка к распаковке .../14-libaio1_0.3.112-9_amd64.deb ...
Распаковка libaio1:amd64 (0.3.112-9) ...
Выбор ранее не выбранного пакета libsnappy1v5:amd64.
Подготовка к распаковке .../15-libsnappy1v5_1.1.8-1_amd64.deb ...
Распаковка libsnappy1v5:amd64 (1.1.8-1) ...
Выбор ранее не выбранного пакета mariadb-server-core-10.5.
Подготовка к распаковке .../16-mariadb-server-core-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка mariadb-server-core-10.5 (1:10.5.15-0+deb11u1) ...
Настройка mysql-common (5.8+1.0.7) ...
update-alternatives: использование /etc/mysql/my.cnf.fallback для предоставления /etc/mysql/my.cnf (my.cnf) в автоматическом режиме
Настройка mariadb-common (1:10.5.15-0+deb11u1) ...
update-alternatives: использование /etc/mysql/mariadb.cnf для предоставления /etc/mysql/my.cnf (my.cnf) в автоматическом режиме
Выбор ранее не выбранного пакета mariadb-server-10.5.
(Чтение базы данных ... на данный момент установлено 39534 файлов и каталогов.)
Подготовка к распаковке .../00-mariadb-server-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка mariadb-server-10.5 (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета libatm1:amd64.
Подготовка к распаковке .../01-libatm1_1%3a2.5.1-4_amd64.deb ...
Распаковка libatm1:amd64 (1:2.5.1-4) ...
Выбор ранее не выбранного пакета libhtml-tagset-perl.
Подготовка к распаковке .../02-libhtml-tagset-perl_3.20-4_all.deb ...
Распаковка libhtml-tagset-perl (3.20-4) ...
Выбор ранее не выбранного пакета liburi-perl.
Подготовка к распаковке .../03-liburi-perl_5.08-1_all.deb ...
Распаковка liburi-perl (5.08-1) ...
Выбор ранее не выбранного пакета libhtml-parser-perl.
Подготовка к распаковке .../04-libhtml-parser-perl_3.75-1+b1_amd64.deb ...
Распаковка libhtml-parser-perl (3.75-1+b1) ...
Выбор ранее не выбранного пакета libcgi-pm-perl.
Подготовка к распаковке .../05-libcgi-pm-perl_4.51-1_all.deb ...
Распаковка libcgi-pm-perl (4.51-1) ...
Выбор ранее не выбранного пакета libfcgi0ldbl:amd64.
Подготовка к распаковке .../06-libfcgi0ldbl_2.4.2-2_amd64.deb ...
Распаковка libfcgi0ldbl:amd64 (2.4.2-2) ...
Выбор ранее не выбранного пакета libfcgi-perl:amd64.
Подготовка к распаковке .../07-libfcgi-perl_0.79+ds-2_amd64.deb ...
Распаковка libfcgi-perl:amd64 (0.79+ds-2) ...
Выбор ранее не выбранного пакета libcgi-fast-perl.
Подготовка к распаковке .../08-libcgi-fast-perl_1%3a2.15-1_all.deb ...
Распаковка libcgi-fast-perl (1:2.15-1) ...
Выбор ранее не выбранного пакета libclone-perl.
Подготовка к распаковке .../09-libclone-perl_0.45-1+b1_amd64.deb ...
Распаковка libclone-perl (0.45-1+b1) ...
Выбор ранее не выбранного пакета libdbd-mariadb-perl.
Подготовка к распаковке .../10-libdbd-mariadb-perl_1.21-3_amd64.deb ...
Распаковка libdbd-mariadb-perl (1.21-3) ...
Выбор ранее не выбранного пакета libencode-locale-perl.
Подготовка к распаковке .../11-libencode-locale-perl_1.05-1.1_all.deb ...
Распаковка libencode-locale-perl (1.05-1.1) ...
Выбор ранее не выбранного пакета libfcgi-bin.
Подготовка к распаковке .../12-libfcgi-bin_2.4.2-2_amd64.deb ...
Распаковка libfcgi-bin (2.4.2-2) ...
Выбор ранее не выбранного пакета libhtml-template-perl.
Подготовка к распаковке .../13-libhtml-template-perl_2.97-1.1_all.deb ...
Распаковка libhtml-template-perl (2.97-1.1) ...
Выбор ранее не выбранного пакета libtimedate-perl.
Подготовка к распаковке .../14-libtimedate-perl_2.3300-2_all.deb ...
Распаковка libtimedate-perl (2.3300-2) ...
Выбор ранее не выбранного пакета libhttp-date-perl.
Подготовка к распаковке .../15-libhttp-date-perl_6.05-1_all.deb ...
Распаковка libhttp-date-perl (6.05-1) ...
Выбор ранее не выбранного пакета libio-html-perl.
Подготовка к распаковке .../16-libio-html-perl_1.004-2_all.deb ...
Распаковка libio-html-perl (1.004-2) ...
Выбор ранее не выбранного пакета liblwp-mediatypes-perl.
Подготовка к распаковке .../17-liblwp-mediatypes-perl_6.04-1_all.deb ...
Распаковка liblwp-mediatypes-perl (6.04-1) ...
Выбор ранее не выбранного пакета libhttp-message-perl.
Подготовка к распаковке .../18-libhttp-message-perl_6.28-1_all.deb ...
Распаковка libhttp-message-perl (6.28-1) ...
Выбор ранее не выбранного пакета libmariadb-dev.
Подготовка к распаковке .../19-libmariadb-dev_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка libmariadb-dev (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета libmariadbd19:amd64.
Подготовка к распаковке .../20-libmariadbd19_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка libmariadbd19:amd64 (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета libmariadbd-dev.
Подготовка к распаковке .../21-libmariadbd-dev_1%3a10.5.15-0+deb11u1_amd64.deb ...
Распаковка libmariadbd-dev (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета libterm-readkey-perl.
Подготовка к распаковке .../22-libterm-readkey-perl_2.38-1+b2_amd64.deb ...
Распаковка libterm-readkey-perl (2.38-1+b2) ...
Выбор ранее не выбранного пакета mariadb-client.
Подготовка к распаковке .../23-mariadb-client_1%3a10.5.15-0+deb11u1_all.deb ...
Распаковка mariadb-client (1:10.5.15-0+deb11u1) ...
Выбор ранее не выбранного пакета mariadb-server.
Подготовка к распаковке .../24-mariadb-server_1%3a10.5.15-0+deb11u1_all.deb ...
Распаковка mariadb-server (1:10.5.15-0+deb11u1) ...
Настройка libconfig-inifiles-perl (3.000003-1) ...
Настройка galera-4 (26.4.11-0+deb11u1) ...
Настройка libfcgi0ldbl:amd64 (2.4.2-2) ...
Настройка libclone-perl (0.45-1+b1) ...
Настройка libhtml-tagset-perl (3.20-4) ...
Настройка liblwp-mediatypes-perl (6.04-1) ...
Настройка libfcgi-bin (2.4.2-2) ...
Настройка libencode-locale-perl (1.05-1.1) ...
Настройка libatm1:amd64 (1:2.5.1-4) ...
Настройка libsnappy1v5:amd64 (1.1.8-1) ...
Настройка libmnl0:amd64 (1.0.4-3) ...
Настройка libio-html-perl (1.004-2) ...
Настройка libmariadb3:amd64 (1:10.5.15-0+deb11u1) ...
Настройка libxtables12:amd64 (1.8.7-1) ...
Настройка lsof (4.93.2+dfsg-1.1) ...
Настройка libmariadb-dev (1:10.5.15-0+deb11u1) ...
Настройка libtimedate-perl (2.3300-2) ...
Настройка libfcgi-perl:amd64 (0.79+ds-2) ...
Настройка libterm-readkey-perl (2.38-1+b2) ...
Настройка libaio1:amd64 (0.3.112-9) ...
Настройка libelf1:amd64 (0.183-1) ...
Настройка liburi-perl (5.08-1) ...
Настройка libdbi-perl:amd64 (1.643-3+b1) ...
Настройка mariadb-server-core-10.5 (1:10.5.15-0+deb11u1) ...
Настройка libhttp-date-perl (6.05-1) ...
Настройка libmariadbd19:amd64 (1:10.5.15-0+deb11u1) ...
Настройка libdbd-mariadb-perl (1.21-3) ...
Настройка mariadb-client-core-10.5 (1:10.5.15-0+deb11u1) ...
Настройка mariadb-client-10.5 (1:10.5.15-0+deb11u1) ...
Настройка libhtml-parser-perl (3.75-1+b1) ...
Настройка libbpf0:amd64 (1:0.3-2) ...
Настройка libhttp-message-perl (6.28-1) ...
Настройка libmariadbd-dev (1:10.5.15-0+deb11u1) ...
Настройка mariadb-client (1:10.5.15-0+deb11u1) ...
Настройка iproute2 (5.10.0-4) ...
Настройка libcgi-pm-perl (4.51-1) ...
Настройка libhtml-template-perl (2.97-1.1) ...
Настройка mariadb-server-10.5 (1:10.5.15-0+deb11u1) ...
invoke-rc.d: не удалось определить текущий уровень выполнения
Остановка сервера базы данных MariaDB: mariadbd.
invoke-rc.d: не удалось определить текущий уровень выполнения
Запуск сервера базы данных MariaDB: mariadbd.
Настройка mariadb-server (1:10.5.15-0+deb11u1) ...
Настройка libcgi-fast-perl (1:2.15-1) ...
Обработка триггеров для libc-bin (2.31-13+deb11u3) ...
root@discourse-one-app:/# service mysql start
mysql: служба не распознана
1 лайк

Хорошо… Я запустил скрипт импорта, но при импорте пользователей возникла ошибка.

Подскажите, пожалуйста, как её исправить?

root@discourse-one-app:/var/www/discourse# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:password@localhost wants vbulletin
Загрузка существующих групп...
Загрузка существующих пользователей...
Загрузка существующих категорий...
Загрузка существующих постов...
Загрузка существующих тем...

импорт групп...
       16 / 16 (100.0%)  [126440 элементов/мин]   
импорт пользователей
Traceback (most recent call last):
        14: from script/import_scripts/vbulletin.rb:999:in `<main>'
        13: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'
        12: from script/import_scripts/vbulletin.rb:82:in `execute'
        11: from script/import_scripts/vbulletin.rb:129:in `import_users'
        10: from /var/www/discourse/script/import_scripts/base.rb:907:in `batches'
         9: from /var/www/discourse/script/import_scripts/base.rb:907:in `loop'
         8: from /var/www/discourse/script/import_scripts/base.rb:908:in `block in batches'
         7: from script/import_scripts/vbulletin.rb:152:in `block in import_users'
         6: from /var/www/discourse/script/import_scripts/base.rb:264:in `create_users'
         5: from /var/www/discourse/script/import_scripts/base.rb:264:in `each'
         4: from /var/www/discourse/script/import_scripts/base.rb:265:in `block in create_users'
         3: from script/import_scripts/vbulletin.rb:170:in `block (2 levels) in import_users'
         2: from script/import_scripts/vbulletin.rb:990:in `parse_timestamp'
         1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/tzinfo-2.0.4/lib/tzinfo/timezone.rb:575:in `utc_to_local'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/tzinfo-2.0.4/lib/tzinfo/timestamp.rb:136:in `for': Integer values are not supported (ArgumentError)

Обновление: Разобрались, почему всё не работало.

Так как Discourse теперь требует TZInfo 2.x, скрипт миграции в данный момент неработоспособен, поскольку использует функцию, изменившуюся между версиями TZInfo 1.2.x и 2.x.

РЕДАКТИРОВАНИЕ
Временные исправления для восстановления работоспособности:

Исправление сбоя импорта часовых поясов из-за TZInfo 2.x
Примечание: Не уверен, что это универсальное решение для всех случаев, но для моей базы данных с корректными временными метками в формате epoch это работает хорошо.

Строка 990
изменено

    Time.zone.at(@tz.utc_to_local(timestamp))

на

    Time.zone.at(timestamp)

Скрипт аварийно завершается из-за nil-значения поля last visited
Поле last visited на самом деле не импортируется из базы данных. Поэтому добавим его в выборку.

Строка 131
изменено

          SELECT userid
               , username
               , homepage
               , usertitle
               , usergroupid
               , joindate
               , email
               , password
               , salt
            FROM #{TABLE_PREFIX}user
           WHERE userid > #{last_user_id}
        ORDER BY userid
           LIMIT #{BATCH_SIZE}

на

          SELECT userid
               , username
               , homepage
               , usertitle
               , usergroupid
               , joindate
               , lastvisit
               , email
               , password
               , salt
            FROM #{TABLE_PREFIX}user
           WHERE userid > #{last_user_id}
        ORDER BY userid
           LIMIT #{BATCH_SIZE}
6 лайков

Я столкнулся с той же проблемой и не мог понять, на какой файл ссылается Haddoq, когда говорил изменить строку 990.

Для всех остальных: это vbulletin5.rb

1 лайк

Удалось решить проблему «недопустимая последовательность байтов в UTF-8» при импорте постов, добавив обработку ошибок в файл vbulletin5.rb.

Вот код, которым я заменил строку 450. Я не знаю Ruby, поэтому это немного костыльное решение.

    begin
      raw = raw.gsub(/(\\r)?\\n/, "\n")
        .gsub("\\t", "\t")
    rescue => error
        p error.message
        p raw
    end

При повторном запуске скрипт вывел проблемный пост в консоль.

Затем я поискал уникальный текст из консоли и выполнил следующую команду в MySQL:

select * from vb_text where rawtext LIKE '%and then my fish ate my car keys%'  limit 10;

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

update vb_text set rawtext='POST FAILED TO MIGRATE (или исправленная версия поста)' where nodeid IN (159079);
2 лайка

Привет! Можешь поделиться кодом, как ты проверяешь

является ли свойство sha1 nil?

У меня та же проблема:
/discourse/app/models/upload.rb:246:in `base62_sha1': undefined method `hex' for nil:NilClass (NoMethodError)
Спасибо!


PS //
Для тех, у кого может возникнуть та же проблема.
В файле discourse\app\models\upload.rb найдите:
"#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}"
и замените на:

    unless sha1.nil?
      "#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}"
    end

Также у меня была ошибка:
discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/core_ext/time/calculations.rb:56:in `at': can't convert nil into an exact number (TypeError)
Чтобы исправить это:
В файле discourse\script\import_scripts\vbulletin.rb найдите:

        user.suspended_at = parse_timestamp(user["bandate"])
        user.suspended_till = 200.years.from_now

и замените на:

        user.suspended_at = parse_timestamp(user["bandate"].to_i)
        user.suspended_till = 200.years.from_now.to_i
1 лайк

Привет,
Я использую Ubuntu 22.04 LTS и хочу перенести данные из vBulletin в Discourse.

DB_HOST = "172.17.0.5"
DB_USER = "root"
DB_PASSWORD = "*******"

Когда я запускаю команду RAILS_ENV=production bundle exec ruby script/import_scripts/vbulletin.rb,
возникает следующая ошибка:

1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/mini_profiler/profiling_methods.rb:83:in `profile_method'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/mini_profiler/profiling_methods.rb:83:in `alias_method': undefined method `call' for class `Redis::Client' (NameError)
Did you mean?  caller

Как мне это исправить?

Вы используете установку для разработки или стандартную установку? Я думаю, вам не нужно добавлять RAILS_ENV=production, так как у вас нет базы данных для продакшена.

Я использую стандартную установку.
Ссылка: https://www.vultr.com/docs/how-to-install-discourse-on-ubuntu-20-04/.
В Docker-установке я не могу использовать MySQL. Я установил MariaDB в образе Docker для Discourse.

root@localhost-app:/var/www/discourse# service mysql start
mysql: unrecognized service
root@localhost-app:/var/www/discourse#

Поэтому я создал образ Docker с MySQL и загрузил туда свою базу данных vBulletin. IP-адрес образа Docker с MySQL — 172.17.0.5.

Спасибо.

Я действовал следующим образом:

  1. Следовал руководству Использование Docker-контейнера (discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub).
  2. Загрузил образ Docker для MySQL и импортировал туда свою базу данных vBulletin. Проверил подключение командой: root@localhost:/opt/discourse# mysql -h 172.17.0.5 -P 3306 --protocol=tcp -u root -p.
  3. Выполнил команду: root@localhost:/opt/discourse# ./launcher enter app.
  4. Попытка выполнить apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7 завершилась ошибкой.
    Поэтому я установил: apt-get update && apt-get install libmariadb-dev mariadb-server.
  5. Запустить MySQL внутри Docker не удалось.
root@localhost-app:/var/www/discourse# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

Файл mysqld.sock отсутствует во всех директориях Docker; команда find ничего не нашла.

root@localhost-app:/var/www/discourse# sudo service mysql start
mysql: unrecognized service
  1. Обратился к статье https://www.baeldung.com/docker-cant-connect-local-mysql и использовал образ Docker с MySQL на адресе “172.17.0.5”.
gem install mysql2
gem install php_serialize

Команда gem install mysql2 не работала до установки пакета libmariadb-dev.
8. Запустил:

su discourse -c 'bundle install --no-deployment --without test --without development --path vendor/bundle'

Появилась ошибка, поэтому я удалил файлы gemfile.lock и .bundle и повторил попытку.
9. После этого я выполнил:

export DB_NAME="vb3" # Измените это на имя базы данных VB3.
export DB_USER="root"
export DB_PASSWORD="mypassword"
export DB_HOST="172.17.0.5"
cd /var/www/discourse
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'

Но скрипт выдал ошибку:

1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/mini_profiler/profiling_methods.rb:83:in `profile_method'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/mini_profiler/profiling_methods.rb:83:in `alias_method': undefined method `call' for class `Redis::Client' (NameError)
Did you mean?  caller

Как это исправить?
Спасибо.

У меня та же проблема. Вы уже решили её? Спасибо!

У меня тоже появилась эта ошибка. Вам удалось с ней справиться?

Я нашел, какое регулярное выражение используется для сопоставления:
# [QUOTE=<username>;<post_id>]...[/QUOTE]
В нём не предусмотрено возможности того, что имя пользователя и ID поста могут быть заключены в двойные кавычки:


В результате значительная часть цитат при миграции в Discourse «потеряла» ссылку на источник:

Вот пример успешной миграции:


А здесь ссылка на источник потеряна:

Насколько я понимаю, проблема возникла здесь:

И это легко исправить, например, так:
raw.gsub!(%r{\[quote="?([^;]+);(\d+)"?\](.+?)\[/quote\]}im) do

Но похоже, что это перестаёт работать, когда есть вложенные цитаты:

У кого-нибудь есть решение для успешной миграции всех цитат?