Нет бюджета на это. Но, может быть.
Кто-нибудь сталкивался с этой проблемой при запуске скрипта импорта?
Обработка постов…
37785 / 48843 (77,4%) Завершено принудительно*
Процесс был прерван до завершения. При загрузке Форумов импортированные сообщения вроде бы есть, но я беспокоюсь, что процесс не завершился корректно, и это может вызвать проблемы.
Есть какие-либо рекомендации? Возможно, ошибка нехватки памяти? Можно ли просто перезапустить скрипт, чтобы продолжить с того места, где он остановился, или он попытается повторно импортировать дублирующиеся данные? Спасибо.
Запустите скрипт повторно. Это не приведет к дублированию данных.
Спасибо, @pfaffman! Это сработало отлично.
Привет,
Прежде всего, спасибо за этот замечательный гайд. Я ценю проделанную работу.
Что касается моей проблемы:
У меня возникают трудности с подключением к базе данных при запуске скрипта импорта, хотя я использую MariaDB для хранения дампa vBulletin вместо MySQL. Я проверил, что MariaDB запущена, смог импортировать дамп vBulletin в неё, и перепроверил имя пользователя, хост и пароль в скрипте четыре раза, но всё безрезультатно.
Чувствую, что упускаю что-то очевидное. Если кто-то сможет подсказать, в каком направлении двигаться, это было бы очень полезно.
Я использую следующие версии:
mysql2 0.5.2
mariadb-server-10.3
discourse master, коммит git cb8fa46
Полное описание ниже.
При попытке запустить
apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7
я получаю ошибку:
E: Package 'libmysqlclient-dev' has no installation candidate
E: Package 'mysql-server-5.7' has no installation candidate
что логично, возможно, эти пакеты были удалены из репозитория за это время.
Поэтому я запускаю вместо этого:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
MariaDB работает как прямая замена, что приятно, так как все шаги выполняются до тех пор, пока я не попробую запустить скрипт миграции, после чего получаю ошибку:
root@discourse:/src# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:@localhost wants vb4
Loading existing groups...
Loading existing users...
Loading existing categories...
Loading existing posts...
Loading existing topics...
==================================================
Access denied for user 'root'@'localhost'
Cannot connect in to database.
Hostname: localhost
Username: root
Password:
database: vb4
Edit the script or set these environment variables:
export DB_HOST="localhost"
export DB_NAME="vbulletin"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="vb_"
export ATTACHMENT_DIR '/path/to/your/attachment/folder'
Exiting.
По поводу прав доступа:
root@discourse:/src# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 59
Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
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 rows in set (0.000 sec)
Я многократно перепроверил имя пользователя и пароль и даже установил их вручную.
Я провел дополнительное расследование и выяснил, что смена базового образа с Ubuntu 16.04 на Debian, безусловно, является причиной того, что MySQL больше недоступна. Однако меня по-прежнему сбивает с толку вопрос о том, как заставить mysql2 подключаться к MariaDB.
Некоторое время назад я отправил PR, в котором mysql-dep.template.yml использует MariaDB. Я использовал его несколько раз.
Похоже, вы пытаетесь не использовать пароль? Я рекомендую использовать пароль. Скрипт предполагает наличие пароля.
Понял. Попробую установить пароль и посмотрю, сработает ли это. Насколько я понимаю, скрипт импорта всё ещё должен работать с MariaDB. Если так, я продолжу устранение неполадок. Спасибо за быструю помощь!
@pfaffman Вот оно! Большое спасибо. Как только я приведу свой форум в порядок, я смогу отправить pull-запрос с версией для VB3, на случай если она кому-нибудь пригодится.
Это также мой тестовый экземпляр, поэтому я не против опубликовать детали — он всё равно будет удалён ![]()
Спасибо всем за помощь, миграция прошла в основном успешно. Пару вложений где-то потерялось, но в целом всё прошло отлично.
Для тех, кто будет читать это в будущем: я мигрировал с Vb3.8.7.
Мне пришлось внести некоторые правки в SQL-запрос в vbulletin.rb, так как структура моей базы данных не совсем совпадала со скриптом, хотя была довольно близка. Я решил отказаться от пользовательских подписей, чтобы ускорить процесс.
Diff на Github: File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub
Для установки MariaDB, заменяющей MySQL, я использовал следующую команду:
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
А чтобы изменить пароль MariaDB с пустого на значение, эта ссылка оказалась наиболее полной:
Ещё раз не могу выразить достаточно благодарности людям в этой теме и всем контрибьюторам Discourse за код и помощь!
Я только что завершил миграцию, и все 2000+ тем получили категорию, унаследованную от экземпляра vBulletin 4. Система не позволяет мне удалить эту категорию и вернуть все эти перенесённые посты в состояние «без выбранной категории». Появляется сообщение: «Невозможно удалить эту категорию, так как в ней содержится 2322 темы».
Есть ли какое-либо обходное решение?
Либо выполните повторную миграцию, либо измените категорию этих тем. При таком количестве вам придется сделать это через командную строку Ruby.
Привет,
Не уверен насчет контекста этого.
Скопируйте вложения в ваш экземпляр Discourse (для пути проверьте настройки VB4).
Может, кто-нибудь поможет?
Здравствуйте,
Я заметил, что существует скрипт для vBulletin 5, однако не могу найти никаких отзывов о нём. Применима ли информация из этой темы и к нему?
Спасибо!
Скрипт должен работать очень похоже.
Запускаю импорт для установки vB4, но он падает при импорте дочерних категорий. Потерпите, я новичок в 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)
Я добавил вывод отладочной информации для диагностики. Значение slug в категории равно nil.
Категория кажется валидной, когда цикл проходит через create_categories(children_categories) do |category|. Я также вывожу в лог opts, import_id и new_category (непосредственно перед .save!) из def create_category в base.rb. Всё, кажется, валидно согласно ожиданиям функций.
Сталкивался ли кто-нибудь с этим раньше?
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):
Наш разработчик попробовал запустить скрипт, но не смог продвинуться далеко. Есть ли кто-то, кто заинтересован в выполнении этой работы для нас на консультационной основе?
Конечно, отправьте мне личное сообщение.
Прошу прощения за мою неосведомленность, но как мне отправить личное сообщение? Я не нашел это очевидным. Или вы можете написать мне напрямую по адресу: abboud at cedrus dot com.
Вопрос об импорте: некоторые сообщения на нашем форуме, работающем на vBulletin, содержат ссылки на другие сообщения в том же форуме. Преобразуются ли эти ссылки при импорте? Если нет, что с ними происходит? Они удаляются?
Я не помню, переписывает ли текущая версия их. Скрипт, который у меня есть (который я планирую отправить в виде PR), исправляет их.


