No hay presupuesto para esto. Pero… quizás.
¿Alguien ha visto este problema al ejecutar el script de importación?
Procesando publicaciones…
37785 / 48843 (77.4%) Finalizado*
El proceso se interrumpió antes de completarse. Al cargar los foros, parece que los mensajes importados están ahí, pero me preocupa que no se haya completado correctamente y que haya problemas.
¿Alguna recomendación? ¿Quizás un error por falta de memoria? ¿Puedo simplemente volver a ejecutar el script para continuar donde se quedó o intentará reimportar datos duplicados? Gracias.
Ejecuta el script de nuevo. No duplicará los datos.
¡Gracias, @pfaffman! Esto funcionó de maravilla.
Hola,
En primer lugar, gracias por esta guía fantástica. Agradezco mucho el trabajo que se ha invertido en ella.
Respecto a mi problema:
Tengo dificultades para conectarme a la base de datos al ejecutar el script de importación, aunque estoy utilizando MariaDB para alojar el volcado de vBulletin en lugar de MySQL. He verificado que MariaDB está en ejecución, he logrado importar mi volcado de vBulletin en él y he revisado cuatro veces el nombre de usuario, el nombre de host y la contraseña en el script, pero sin éxito.
Siento que me está faltando algo sencillo; si alguien pudiera indicarme el camino correcto, sería de gran ayuda.
Estoy utilizando las siguientes versiones:
mysql2 0.5.2
mariadb-server-10.3
dicourse master commit git cb8fa46
Descripción completa a continuación:
Cuando intento ejecutar:
apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7
Recibo un error:
E: El paquete 'libmysqlclient-dev' no tiene candidato para instalación
E: El paquete 'mysql-server-5.7' no tiene candidato para instalación
Lo cual tiene sentido; quizás esos paquetes hayan sido eliminados del repositorio desde entonces.
Por lo tanto, en su lugar ejecuto:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
MariaDB funciona como un reemplazo directo, lo cual es genial porque todos los pasos funcionan hasta que intento ejecutar el script de migración, momento en el cual recibo el siguiente error:
root@discourse:/src# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:@localhost quiere vb4
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...
==================================================
Acceso denegado para el usuario 'root'@'localhost'
No se puede conectar a la base de datos.
Nombre de host: localhost
Nombre de usuario: root
Contraseña:
Base de datos: vb4
Edite el script o establezca estas variables de entorno:
export DB_HOST="localhost"
export DB_NAME="vbulletin"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="vb_"
export ATTACHMENT_DIR '/ruta/a/tu/carpeta_de_adjuntos'
Saliendo.
Sobre los permisos:
root@discourse:/src# mysql
Bienvenido al monitor de MariaDB. Los comandos terminan con ; o \g.
Su ID de conexión de MariaDB es 59
Versión del servidor: 10.3.17-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab y otros.
Escriba 'help;' o '\h' para obtener ayuda. Escriba '\c' para borrar la declaración de entrada actual.
MariaDB [(none)]> show grants;
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------+
2 filas en el conjunto (0.000 seg)
He verificado dos veces el nombre de usuario y la contraseña muchas veces, e incluso los he configurado manualmente.
He investigado un poco más y descubrí que el cambio de la imagen base de Ubuntu 16.04 a Debian es sin duda la causa de que MySQL ya no esté disponible, pero aún no entiendo cómo hacer que mysql2 se conecte a MariaDB.
Hace un tiempo envié un PR que hace que mysql-dep.template.yml utilice MariaDB. Lo he usado varias veces.
Parece que estás intentando no usar una contraseña. Recomiendo usar una contraseña. El script asume que hay una contraseña.
Entendido. Probaré estableciendo una contraseña y veré si funciona. Por lo que he entendido, el script de importación debería seguir funcionando con MariaDB. De ser así, seguiré solucionando problemas. ¡Gracias por la rápida ayuda!
@pfaffman ¡Eso fue todo! Muchas gracias. Una vez que ponga mi foro en orden, puedo enviar un PR con una versión de VB3 que tenía, por si acaso es útil para alguien.
Esta también es mi instancia de prueba, así que no tengo problema en publicar los detalles; va a ser desmantelada ![]()
¡Gracias a todos por la ayuda! La migración salió bastante bien. Hubo un par de archivos adjuntos que faltaban aquí y allá, pero en general fue un éxito.
Para los que lean esto en el futuro: migrei desde Vb3.8.7.
Tuve que hacer algunos ajustes a la consulta SQL en vbulletin.rb, ya que la estructura de mi base de datos no coincidía exactamente con el script, aunque era muy similar. Decidí renunciar a las leyendas personalizadas para agilizar el proceso.
Diferencia en GitHub: File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub
Para la instalación de MariaDB que reemplaza a MySQL, utilicé el siguiente comando:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
Y para cambiar la contraseña de MariaDB de nula a un valor, este enlace fue el más completo:
Nuevamente, no puedo agradecer lo suficiente a las personas de este hilo y a todos los contribuyentes de Discourse por su código y ayuda.
Acabo de finalizar una migración y asignó a todos los más de 2.000 temas una categoría heredada de la instancia de vBulletin 4. No me permite eliminar esta categoría y restablecer todos estos temas migrados a “sin categoría seleccionada”. “No se puede eliminar esta categoría porque tiene 2322 temas”.
¿Existe alguna solución alternativa?
Vuelva a migrar o cambie la categoría en esos temas. Con tantos, deberá hacerlo desde la línea de comandos de Ruby.
Hola,
No estoy seguro del contexto de esto.
Copia los archivos adjuntos a tu instancia de Discourse (para la ruta, verifica la configuración de VB4).
¿Puede alguien ayudar, por favor?
Hola,
He notado que existe un script de vBulletin 5, pero no he encontrado ninguna opinión al respecto. ¿La información de este tema también se aplica a él?
¡Gracias!
El script debería funcionar de manera muy similar.
Ejecutando una importación para una instalación de vB4, pero falla al importar las categorías hijas. Tengan paciencia, soy un novato en Rails/Ruby.
Traceback (most recent call last):
20: from script/import_scripts/vbulletin.rb:943:in `<main>'
19: from /home/vagrant/discourse/script/import_scripts/base.rb:47:in `perform'
18: from script/import_scripts/vbulletin.rb:84:in `execute'
17: from script/import_scripts/vbulletin.rb:293:in `import_categories'
16: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `create_categories'
15: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `each'
14: from /home/vagrant/discourse/script/import_scripts/base.rb:422:in `block in create_categories'
13: from /home/vagrant/discourse/script/import_scripts/base.rb:454:in `create_category'
12: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/suppressor.rb:48:in `save!'
11: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `save!'
10: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
9: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:212:in `transaction'
8: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
7: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
6: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
5: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
4: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
3: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
2: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `block in save!'
1: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:53:in `save!'
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:81:in `raise_validation_error': Validation failed: Slug is invalid (ActiveRecord::RecordInvalid)
Agregué algo de salida de depuración para solucionar el problema. El valor de slug en la Categoría es nil.
La categoría parece ser válida cuando itera a través de create_categories(children_categories) do |category|. También registro opts, import_id y new_category (inmediatamente antes de .save!) desde def create_category en base.rb. Todo parece ser válido según lo que esperan las funciones.
¿Alguien ha encontrado esto antes?
37 / 53 ( 69.8%) [345139 items/min]
category:
{"forumid"=>355, "title"=>"News", "description"=>"RSS Feed", "displayorder"=>6, "parentid"=>205}
Entering create_category...
opts:
{:id=>355, :name=>"News", :position=>6, :description=>"RSS Feed", :parent_category_id=>6}
import_id:
355
new_category:
#<Category id: nil, name: "News", color: "BF1E2E", topic_id: nil, topic_count: 0, created_at: nil, updated_at: nil, user_id: -1, topics_year: 0, topics_month: 0, topics_week: 0, slug: nil, description: nil, text_color: "FFF", read_restricted: false, auto_close_hours: nil, post_count: 0, latest_post_id: nil, latest_topic_id: nil, position: 6, parent_category_id: 6, posts_year: 0, posts_month: 0, posts_week: 0, email_in: nil, email_in_allow_strangers: false, topics_day: 0, posts_day: 0, allow_badges: true, name_lower: nil, auto_close_based_on_last_post: false, topic_template: nil, contains_messages: nil, sort_order: nil, sort_ascending: nil, uploaded_logo_id: nil, uploaded_background_id: nil, topic_featured_link_allowed: true, all_topics_wiki: false, show_subcategory_list: false, num_featured_topics: 3, default_view: nil, subcategory_list_style: "rows_with_featured_topics", default_top_period: "all", mailinglist_mirror: false, minimum_required_tags: 0, navigate_to_first_post_after_read: false, search_priority: 0, allow_global_tags: false, reviewable_by_group_id: nil, required_tag_group_id: nil, min_tags_from_required_group: 1>
Traceback (most recent call last):
Nuestro desarrollador probó el script pero no logró avanzar mucho. ¿Hay alguien interesado en hacerlo por nosotros en calidad de consultor?
Claro, envíame un mensaje privado.
Perdona mi ignorancia, pero ¿cómo envío un mensaje privado? No me pareció obvio. O puedes escribirme directamente a abboud en cedrus punto com.
Pregunta sobre la importación: algunos mensajes en nuestro foro basado en vBulletin tienen enlaces a otros mensajes del mismo foro. ¿Se convierten estos enlaces al importar? Si no es así, ¿qué ocurre con ellos? ¿Se eliminan?
No recuerdo si la versión actual los reescribe. El script que tengo (que tengo la intención de enviar como PR) los corrige.


