Migrar un foro vBulletin 4 a Discourse

No te preocupes Jay, solo estoy agradecido de tener a alguien aquí que me guíe un poco :smiley:

Lo único que me preocupa es hacer un cambio de tal manera que ninguno de los archivos adjuntos se cargue, pero todos se marquen como completados en la migración, por lo que tengo que hacerlo todo de nuevo.

¿Sabes específicamente para qué se utiliza la propiedad short_url en Discourse? ¿Es algo que puedo cambiar a mi gusto, o tiene que coincidir con el objeto para la vinculación de publicaciones y el paso de adjuntos más adelante?

2 Me gusta

short_url es una función en el modelo Upload. Si no funciona, es porque no hay un Upload. Supongo que a continuación miraría que upload está regresando de find_upload. Tal vez no lo está encontrando realmente.

2 Me gusta

Aquí está la salida

Cambié los datos de identificación (nombre de archivo y URL del bucket S3)

El #418 funciona, el #419 no funciona, aparte de los diferentes datos de propiedad, parece estar bien, ¿no?

El nombre de archivo en 419 usa un guion bajo y el 418 no, pero hay otros nombres de archivo anteriores que usan guion bajo en su nombre de archivo sin problemas.
Otros nombres de archivo también son mucho más largos que el que falla, así que no creo que tenga nada que ver con el nombre de archivo.

2 Me gusta

La publicación anterior fue errónea, @pfaffman tenía razón en sus suposiciones.

Debido a mi propia lógica añadida, el script falló en mi propio código, por lo que el último elemento mostrado fue el último elemento exitoso.

El elemento problemático tenía todas las propiedades establecidas como nil excepto el nombre del archivo.

Una simple verificación si la propiedad sha1 era nil solucionó el problema.

Muchísimas gracias a @pfaffman <3

3 Me gusta

¡La historia de mi vida!

2 Me gusta

Disculpa que te moleste de nuevo, pfaffman, pero ¿es esto normal?

3679343 / 3550728 (103.6%)

¿Parece que durante la carga del archivo adjunto ha superado el 100%?

1 me gusta

Significa que la consulta que obtiene el número total de archivos adjuntos y la que obtiene los archivos adjuntos son diferentes. Probablemente significa que el número de archivos adjuntos es incorrecto. A menos que continúe para siempre, en cuyo caso, algo está mal. :wink:

1 me gusta

Attempted @Jack51 s Excelent recap for the steps involved.

However (attempting this on a digitalocean environment) the step for mariadb fails… following those instructions (with 10.5 instead of 10.3) the mysql service is unknown after install.

likely has something to do with that apt-utils wasn’t installed maybe… but also throws
invoke-rc.d: policy-rc.d denied execution of restart.

not sure how to proceed

edit: rebuilt the discourse, made sure to install apt-utils first… still get the same error… can’t start the mariadb server

# 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
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  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
Suggested packages:
  iproute2-doc libmldbm-perl libnet-daemon-perl libsql-statement-perl libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx mariadb-test netcat-openbsd
The following NEW packages will be installed:
  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 upgraded, 42 newly installed, 0 to remove and 0 not upgraded.
Need to get 28.9 MB of archives.
After this operation, 227 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bullseye/main amd64 mysql-common all 5.8+1.0.7 [7,464 B]
Get:2 http://deb.debian.org/debian bullseye/main amd64 mariadb-common all 1:10.5.15-0+deb11u1 [36.7 kB]
Get:3 http://deb.debian.org/debian bullseye/main amd64 galera-4 amd64 26.4.11-0+deb11u1 [804 kB]
Get:4 http://deb.debian.org/debian bullseye/main amd64 libelf1 amd64 0.183-1 [165 kB]
Get:5 http://deb.debian.org/debian bullseye/main amd64 libbpf0 amd64 1:0.3-2 [98.3 kB]
Get:6 http://deb.debian.org/debian bullseye/main amd64 libmnl0 amd64 1.0.4-3 [12.5 kB]
Get:7 http://deb.debian.org/debian bullseye/main amd64 libxtables12 amd64 1.8.7-1 [45.1 kB]
Get:8 http://deb.debian.org/debian bullseye/main amd64 iproute2 amd64 5.10.0-4 [930 kB]
Get:9 http://deb.debian.org/debian bullseye/main amd64 libdbi-perl amd64 1.643-3+b1 [780 kB]
Get:10 http://deb.debian.org/debian bullseye/main amd64 lsof amd64 4.93.2+dfsg-1.1 [319 kB]
Get:11 http://deb.debian.org/debian bullseye/main amd64 libconfig-inifiles-perl all 3.000003-1 [52.1 kB]
Get:12 http://deb.debian.org/debian bullseye/main amd64 libmariadb3 amd64 1:10.5.15-0+deb11u1 [176 kB]
Get:13 http://deb.debian.org/debian bullseye/main amd64 mariadb-client-core-10.5 amd64 1:10.5.15-0+deb11u1 [783 kB]
Get:14 http://deb.debian.org/debian bullseye/main amd64 mariadb-client-10.5 amd64 1:10.5.15-0+deb11u1 [1,509 kB]
Get:15 http://deb.debian.org/debian bullseye/main amd64 libaio1 amd64 0.3.112-9 [12.5 kB]
Get:16 http://deb.debian.org/debian bullseye/main amd64 libsnappy1v5 amd64 1.1.8-1 [17.9 kB]
Get:17 http://deb.debian.org/debian bullseye/main amd64 mariadb-server-core-10.5 amd64 1:10.5.15-0+deb11u1 [6,689 kB]
Get:18 http://deb.debian.org/debian bullseye/main amd64 mariadb-server-10.5 amd64 1:10.5.15-0+deb11u1 [4,260 kB]
Get:19 http://deb.debian.org/debian bullseye/main amd64 libatm1 amd64 1:2.5.1-4 [71.3 kB]
Get:20 http://deb.debian.org/debian bullseye/main amd64 libhtml-tagset-perl all 3.20-4 [13.0 kB]
Get:21 http://deb.debian.org/debian bullseye/main amd64 liburi-perl all 5.08-1 [90.6 kB]
Get:22 http://deb.debian.org/debian bullseye/main amd64 libhtml-parser-perl amd64 3.75-1+b1 [105 kB]
Get:23 http://deb.debian.org/debian bullseye/main amd64 libcgi-pm-perl all 4.51-1 [224 kB]
Get:24 http://deb.debian.org/debian bullseye/main amd64 libfcgi0ldbl amd64 2.4.2-2 [26.1 kB]
Get:25 http://deb.debian.org/debian bullseye/main amd64 libfcgi-perl amd64 0.79+ds-2 [27.6 kB]
Get:26 http://deb.debian.org/debian bullseye/main amd64 libcgi-fast-perl all 1:2.15-1 [12.1 kB]
Get:27 http://deb.debian.org/debian bullseye/main amd64 libclone-perl amd64 0.45-1+b1 [15.4 kB]
Get:28 http://deb.debian.org/debian bullseye/main amd64 libdbd-mariadb-perl amd64 1.21-3 [110 kB]
Get:29 http://deb.debian.org/debian bullseye/main amd64 libencode-locale-perl all 1.05-1.1 [13.2 kB]
Get:30 http://deb.debian.org/debian bullseye/main amd64 libfcgi-bin amd64 2.4.2-2 [12.9 kB]
Get:31 http://deb.debian.org/debian bullseye/main amd64 libhtml-template-perl all 2.97-1.1 [66.2 kB]
Get:32 http://deb.debian.org/debian bullseye/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB]
Get:33 http://deb.debian.org/debian bullseye/main amd64 libhttp-date-perl all 6.05-1 [10.4 kB]
Get:34 http://deb.debian.org/debian bullseye/main amd64 libio-html-perl all 1.004-2 [16.1 kB]
Get:35 http://deb.debian.org/debian bullseye/main amd64 liblwp-mediatypes-perl all 6.04-1 [19.9 kB]
Get:36 http://deb.debian.org/debian bullseye/main amd64 libhttp-message-perl all 6.28-1 [79.6 kB]
Get:37 http://deb.debian.org/debian bullseye/main amd64 libmariadb-dev amd64 1:10.5.15-0+deb11u1 [185 kB]
Get:38 http://deb.debian.org/debian bullseye/main amd64 libmariadbd19 amd64 1:10.5.15-0+deb11u1 [4,917 kB]
Get:39 http://deb.debian.org/debian bullseye/main amd64 libmariadbd-dev amd64 1:10.5.15-0+deb11u1 [6,085 kB]
Get:40 http://deb.debian.org/debian bullseye/main amd64 libterm-readkey-perl amd64 2.38-1+b2 [27.8 kB]
Get:41 http://deb.debian.org/debian bullseye/main amd64 mariadb-client all 1:10.5.15-0+deb11u1 [35.2 kB]
Get:42 http://deb.debian.org/debian bullseye/main amd64 mariadb-server all 1:10.5.15-0+deb11u1 [35.3 kB]
Fetched 28.9 MB in 0s (124 MB/s)             
Extracting templates from packages: 100%
Preconfiguring packages ...
Selecting previously unselected package mysql-common.
(Reading database ... 38903 files and directories currently installed.)
Preparing to unpack .../00-mysql-common_5.8+1.0.7_all.deb ...
Unpacking mysql-common (5.8+1.0.7) ...
Selecting previously unselected package mariadb-common.
Preparing to unpack .../01-mariadb-common_1%3a10.5.15-0+deb11u1_all.deb ...
Unpacking mariadb-common (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package galera-4.
Preparing to unpack .../02-galera-4_26.4.11-0+deb11u1_amd64.deb ...
Unpacking galera-4 (26.4.11-0+deb11u1) ...
Selecting previously unselected package libelf1:amd64.
Preparing to unpack .../03-libelf1_0.183-1_amd64.deb ...
Unpacking libelf1:amd64 (0.183-1) ...
Selecting previously unselected package libbpf0:amd64.
Preparing to unpack .../04-libbpf0_1%3a0.3-2_amd64.deb ...
Unpacking libbpf0:amd64 (1:0.3-2) ...
Selecting previously unselected package libmnl0:amd64.
Preparing to unpack .../05-libmnl0_1.0.4-3_amd64.deb ...
Unpacking libmnl0:amd64 (1.0.4-3) ...
Selecting previously unselected package libxtables12:amd64.
Preparing to unpack .../06-libxtables12_1.8.7-1_amd64.deb ...
Unpacking libxtables12:amd64 (1.8.7-1) ...
Selecting previously unselected package iproute2.
Preparing to unpack .../07-iproute2_5.10.0-4_amd64.deb ...
Unpacking iproute2 (5.10.0-4) ...
Selecting previously unselected package libdbi-perl:amd64.
Preparing to unpack .../08-libdbi-perl_1.643-3+b1_amd64.deb ...
Unpacking libdbi-perl:amd64 (1.643-3+b1) ...
Selecting previously unselected package lsof.
Preparing to unpack .../09-lsof_4.93.2+dfsg-1.1_amd64.deb ...
Unpacking lsof (4.93.2+dfsg-1.1) ...
Selecting previously unselected package libconfig-inifiles-perl.
Preparing to unpack .../10-libconfig-inifiles-perl_3.000003-1_all.deb ...
Unpacking libconfig-inifiles-perl (3.000003-1) ...
Selecting previously unselected package libmariadb3:amd64.
Preparing to unpack .../11-libmariadb3_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking libmariadb3:amd64 (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package mariadb-client-core-10.5.
Preparing to unpack .../12-mariadb-client-core-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking mariadb-client-core-10.5 (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package mariadb-client-10.5.
Preparing to unpack .../13-mariadb-client-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking mariadb-client-10.5 (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package libaio1:amd64.
Preparing to unpack .../14-libaio1_0.3.112-9_amd64.deb ...
Unpacking libaio1:amd64 (0.3.112-9) ...
Selecting previously unselected package libsnappy1v5:amd64.
Preparing to unpack .../15-libsnappy1v5_1.1.8-1_amd64.deb ...
Unpacking libsnappy1v5:amd64 (1.1.8-1) ...
Selecting previously unselected package mariadb-server-core-10.5.
Preparing to unpack .../16-mariadb-server-core-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking mariadb-server-core-10.5 (1:10.5.15-0+deb11u1) ...
Setting up mysql-common (5.8+1.0.7) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Setting up mariadb-common (1:10.5.15-0+deb11u1) ...
update-alternatives: using /etc/mysql/mariadb.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Selecting previously unselected package mariadb-server-10.5.
(Reading database ... 39534 files and directories currently installed.)
Preparing to unpack .../00-mariadb-server-10.5_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking mariadb-server-10.5 (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package libatm1:amd64.
Preparing to unpack .../01-libatm1_1%3a2.5.1-4_amd64.deb ...
Unpacking libatm1:amd64 (1:2.5.1-4) ...
Selecting previously unselected package libhtml-tagset-perl.
Preparing to unpack .../02-libhtml-tagset-perl_3.20-4_all.deb ...
Unpacking libhtml-tagset-perl (3.20-4) ...
Selecting previously unselected package liburi-perl.
Preparing to unpack .../03-liburi-perl_5.08-1_all.deb ...
Unpacking liburi-perl (5.08-1) ...
Selecting previously unselected package libhtml-parser-perl.
Preparing to unpack .../04-libhtml-parser-perl_3.75-1+b1_amd64.deb ...
Unpacking libhtml-parser-perl (3.75-1+b1) ...
Selecting previously unselected package libcgi-pm-perl.
Preparing to unpack .../05-libcgi-pm-perl_4.51-1_all.deb ...
Unpacking libcgi-pm-perl (4.51-1) ...
Selecting previously unselected package libfcgi0ldbl:amd64.
Preparing to unpack .../06-libfcgi0ldbl_2.4.2-2_amd64.deb ...
Unpacking libfcgi0ldbl:amd64 (2.4.2-2) ...
Selecting previously unselected package libfcgi-perl:amd64.
Preparing to unpack .../07-libfcgi-perl_0.79+ds-2_amd64.deb ...
Unpacking libfcgi-perl:amd64 (0.79+ds-2) ...
Selecting previously unselected package libcgi-fast-perl.
Preparing to unpack .../08-libcgi-fast-perl_1%3a2.15-1_all.deb ...
Unpacking libcgi-fast-perl (1:2.15-1) ...
Selecting previously unselected package libclone-perl.
Preparing to unpack .../09-libclone-perl_0.45-1+b1_amd64.deb ...
Unpacking libclone-perl (0.45-1+b1) ...
Selecting previously unselected package libdbd-mariadb-perl.
Preparing to unpack .../10-libdbd-mariadb-perl_1.21-3_amd64.deb ...
Unpacking libdbd-mariadb-perl (1.21-3) ...
Selecting previously unselected package libencode-locale-perl.
Preparing to unpack .../11-libencode-locale-perl_1.05-1.1_all.deb ...
Unpacking libencode-locale-perl (1.05-1.1) ...
Selecting previously unselected package libfcgi-bin.
Preparing to unpack .../12-libfcgi-bin_2.4.2-2_amd64.deb ...
Unpacking libfcgi-bin (2.4.2-2) ...
Selecting previously unselected package libhtml-template-perl.
Preparing to unpack .../13-libhtml-template-perl_2.97-1.1_all.deb ...
Unpacking libhtml-template-perl (2.97-1.1) ...
Selecting previously unselected package libtimedate-perl.
Preparing to unpack .../14-libtimedate-perl_2.3300-2_all.deb ...
Unpacking libtimedate-perl (2.3300-2) ...
Selecting previously unselected package libhttp-date-perl.
Preparing to unpack .../15-libhttp-date-perl_6.05-1_all.deb ...
Unpacking libhttp-date-perl (6.05-1) ...
Selecting previously unselected package libio-html-perl.
Preparing to unpack .../16-libio-html-perl_1.004-2_all.deb ...
Unpacking libio-html-perl (1.004-2) ...
Selecting previously unselected package liblwp-mediatypes-perl.
Preparing to unpack .../17-liblwp-mediatypes-perl_6.04-1_all.deb ...
Unpacking liblwp-mediatypes-perl (6.04-1) ...
Selecting previously unselected package libhttp-message-perl.
Preparing to unpack .../18-libhttp-message-perl_6.28-1_all.deb ...
Unpacking libhttp-message-perl (6.28-1) ...
Selecting previously unselected package libmariadb-dev.
Preparing to unpack .../19-libmariadb-dev_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking libmariadb-dev (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package libmariadbd19:amd64.
Preparing to unpack .../20-libmariadbd19_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking libmariadbd19:amd64 (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package libmariadbd-dev.
Preparing to unpack .../21-libmariadbd-dev_1%3a10.5.15-0+deb11u1_amd64.deb ...
Unpacking libmariadbd-dev (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package libterm-readkey-perl.
Preparing to unpack .../22-libterm-readkey-perl_2.38-1+b2_amd64.deb ...
Unpacking libterm-readkey-perl (2.38-1+b2) ...
Selecting previously unselected package mariadb-client.
Preparing to unpack .../23-mariadb-client_1%3a10.5.15-0+deb11u1_all.deb ...
Unpacking mariadb-client (1:10.5.15-0+deb11u1) ...
Selecting previously unselected package mariadb-server.
Preparing to unpack .../24-mariadb-server_1%3a10.5.15-0+deb11u1_all.deb ...
Unpacking mariadb-server (1:10.5.15-0+deb11u1) ...
Setting up libconfig-inifiles-perl (3.000003-1) ...
Setting up galera-4 (26.4.11-0+deb11u1) ...
Setting up libfcgi0ldbl:amd64 (2.4.2-2) ...
Setting up libclone-perl (0.45-1+b1) ...
Setting up libhtml-tagset-perl (3.20-4) ...
Setting up liblwp-mediatypes-perl (6.04-1) ...
Setting up libfcgi-bin (2.4.2-2) ...
Setting up libencode-locale-perl (1.05-1.1) ...
Setting up libatm1:amd64 (1:2.5.1-4) ...
Setting up libsnappy1v5:amd64 (1.1.8-1) ...
Setting up libmnl0:amd64 (1.0.4-3) ...
Setting up libio-html-perl (1.004-2) ...
Setting up libmariadb3:amd64 (1:10.5.15-0+deb11u1) ...
Setting up libxtables12:amd64 (1.8.7-1) ...
Setting up lsof (4.93.2+dfsg-1.1) ...
Setting up libmariadb-dev (1:10.5.15-0+deb11u1) ...
Setting up libtimedate-perl (2.3300-2) ...
Setting up libfcgi-perl:amd64 (0.79+ds-2) ...
Setting up libterm-readkey-perl (2.38-1+b2) ...
Setting up libaio1:amd64 (0.3.112-9) ...
Setting up libelf1:amd64 (0.183-1) ...
Setting up liburi-perl (5.08-1) ...
Setting up libdbi-perl:amd64 (1.643-3+b1) ...
Setting up mariadb-server-core-10.5 (1:10.5.15-0+deb11u1) ...
Setting up libhttp-date-perl (6.05-1) ...
Setting up libmariadbd19:amd64 (1:10.5.15-0+deb11u1) ...
Setting up libdbd-mariadb-perl (1.21-3) ...
Setting up mariadb-client-core-10.5 (1:10.5.15-0+deb11u1) ...
Setting up mariadb-client-10.5 (1:10.5.15-0+deb11u1) ...
Setting up libhtml-parser-perl (3.75-1+b1) ...
Setting up libbpf0:amd64 (1:0.3-2) ...
Setting up libhttp-message-perl (6.28-1) ...
Setting up libmariadbd-dev (1:10.5.15-0+deb11u1) ...
Setting up mariadb-client (1:10.5.15-0+deb11u1) ...
Setting up iproute2 (5.10.0-4) ...
Setting up libcgi-pm-perl (4.51-1) ...
Setting up libhtml-template-perl (2.97-1.1) ...
Setting up mariadb-server-10.5 (1:10.5.15-0+deb11u1) ...
invoke-rc.d: could not determine current runlevel
Stopping MariaDB database server: mariadbd.
invoke-rc.d: could not determine current runlevel
Starting MariaDB database server: mariadbd.
Setting up mariadb-server (1:10.5.15-0+deb11u1) ...
Setting up libcgi-fast-perl (1:2.15-1) ...
Processing triggers for libc-bin (2.31-13+deb11u3) ...
root@discourse-one-app:/# service mysql start
mysql: unrecognized service
1 me gusta

Ok.. así que logré ejecutar el script de importación, aunque obtengo un error al importar usuarios.

¿Alguna idea de cómo puedo superar esto?

root@discourse-one-app:/var/www/discourse# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:password@localhost quiere vbulletin
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...

importando grupos...
       16 / 16 (100.0%)  [126440 items/min]   
importando usuarios
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)

Actualización: Descubrí por qué las cosas fallaban.

Como Discourse ahora requiere TZInfo 2.x, el script de migración está actualmente roto porque utiliza una función que cambió de TZInfo 1.2.x a 2.x.

EDITAR
Soluciones temporales para que las cosas funcionen:

Solucionar el error de TZInfo 2.x al importar zonas horarias
Nota: No estoy seguro de que esta sea una buena solución para todas las situaciones, pero para mi base de datos que tenía marcas de tiempo de época bien formadas para las fechas, esto parece funcionar bien.

Línea 990
cambiado

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

a

    Time.zone.at(timestamp)

El script falla porque la última visita es un valor nulo
La última visita no se importa realmente de la base de datos. Así que añadimos esto a lo que se está obteniendo.

Línea 131
cambiado

          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}

a

          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 Me gusta

Me encontré con el mismo problema y no pude averiguar a qué archivo se refería Haddoq cuando dijo que cambiara la línea 990.

Para cualquier otra persona, es vbulletin5.rb

1 me gusta

Pude solucionar el problema de “secuencia de bytes no válida en UTF-8” al importar publicaciones agregando un manejo de errores a vbulletin5.rb

Aquí está el código con el que reemplacé la línea 450. No sé ruby, así que esto es un poco un hack.

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

Cuando volví a ejecutar el script, imprimió la publicación infractora en la consola.

Luego busqué algún texto único de la consola y ejecuté el siguiente comando en mysql:

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

Esto me dio el nodeid de la fila infractora, así que lo usé para actualizar la fila que pude alimentar en una consulta que corrigió el texto erróneo.

update vb_text set rawtext='POST FAILED TO MIGRATE (o una versión corregida de la publicación)' where nodeid IN (159079);
2 Me gusta

Hola! ¿Puedes compartir el código, cómo verificas

si la propiedad sha1 era nil

?

Tengo el mismo problema, con:
/discourse/app/models/upload.rb:246:in `base62_sha1': undefined method `hex' for nil:NilClass (NoMethodError)
¡Gracias!


PD //
Para aquellos que puedan tener el mismo problema.
En el archivo discourse\app\models\upload.rb busca:
"#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}"
reemplaza con:

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

Además, tuve:
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)
error.
Para solucionarlo:
En discourse\script\import_scripts\vbulletin.rb encontré:

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

y reemplaza con:

        user.suspended_at = parse_timestamp(user["bandate"].to_i)
        user.suspended_till = 200.years.from_now.to_i
1 me gusta

Hola,
Estoy usando Ubuntu 22.04 LTS y quiero convertir vBulletin a Discourse.

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

Cuando introduzco RAILS_ENV=production bundle exec ruby script/import_scripts/vbulletin.rb,
ocurre este error

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

¿Cómo puedo solucionarlo?

¿Estás usando una instalación de desarrollo o una instalación estándar? Creo que no necesitas añadir RAILS_ENV=production ya que no tienes una base de datos de producción.

Estoy usando la instalación estándar.
Hice referencia a https://www.vultr.com/docs/how-to-install-discourse-on-ubuntu-20-04/.
No puedo usar Mysql en la instalación de docker. Instalé MariaDB en la imagen de docker de discourse.

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

Así que creé una imagen de docker de mysql y subí mi base de datos de vBulletine allí. La dirección IP de la imagen de docker de mysql es 172.17.0.5

Gracias.

Trabajé de la siguiente manera:
siguiendo Usando un contenedor Docker

  1. Instalación estándar de Discourse (discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub).
  2. Descargué MySQL Docker y subí mi base de datos vBulletin allí.
    Lo comprobé usando el comando <root@localhost:/opt/discourse# mysql -h 172.17.0.5 -P 3306 --protocol=tcp -u root -p>.
  3. root@localhost:/opt/discourse#./launcer enter app
  4. apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7 falló.
    así que instalé apt-get update && apt-get install libmariadb-dev mariadb-server
  5. No puedo ejecutar MySQL en 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)

No hay mysqld.sock en todos los directorios de Docker. No pude encontrarlo con el comando <find>.

root@localhost-app:/var/www/discourse# sudo service mysql start
mysql: unrecognized service
  1. Hice referencia a https://www.baeldung.com/docker-cant-connect-local-mysql y usé la imagen de Docker de MySQL en “172.17.0.5”.
gem install mysql2
gem install php_serialize

<gem install mysql2> no funcionó hasta que se instaló libmariadb-dev.
8. Ejecuté

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

Hubo un error, así que borré gemfile.lock y el archivo .bundle y lo intenté de nuevo.
9. Después de eso, intenté:

export DB_NAME="vb3" # Cambia esto al nombre de la base de datos de 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'

Pero el script genera un error.

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

¿Cómo puedo solucionarlo?
Gracias.

el mismo problema aquí, ¿ya resolviste el problema? ¡Gracias!

También me encontré con este, ¿lograste superarlo?

Encontré qué regexp se usó para que coincidiera con:
# [QUOTE=<username>;<post_id>]...[/QUOTE]
no hay provisión para la posibilidad de que el nombre de usuario y el ID de la publicación puedan estar entre comillas dobles:


Como resultado, una parte significativa de las citas migradas a discourse, “pierden” el enlace a sus fuentes:

Aquí se migraron con éxito:


Aquí se perdió el enlace a su fuente:

Según entiendo, esto sucedió aquí:

Y esto se soluciona fácilmente con algo como esto:
raw.gsub!(%r{\\[quote=\"?([^;]+);(\\d+)\"?\\](.+?)\\[/quote\\]}im) do

Pero parece que esto deja de funcionar cuando también hay citas anidadas:

¿Alguien tiene una solución para transferir todas las citas con éxito?