目前没有预算。不过,也许吧。
有人遇到过运行导入脚本时出现这个问题吗?
正在处理帖子…
37785 / 48843 (77.4%) 已终止*
该进程在完成前被终止。当我加载论坛时,导入的消息似乎已经存在,但我担心它没有正常完成,可能会出现问题。
有什么建议吗?也许是内存不足错误?我可以简单地重新运行脚本以从中断处继续,还是它会尝试重新导入重复数据?谢谢。
重新运行脚本。它不会重复数据。
谢谢,@pfaffman!这非常有效。
您好,
首先,感谢您提供这份出色的指南。我非常感激为此付出的努力。
关于我的问题:
我在运行导入脚本时遇到了连接数据库的问题,尽管我使用的是 MariaDB 来存储 vBulletin 的备份数据,而不是 MySQL。我已经确认 MariaDB 正在运行,我也成功将 vBulletin 的备份数据导入其中,并且对脚本中的用户名、主机名和密码进行了四次核对,但依然无法成功。
我觉得自己可能忽略了某个简单的细节,如果有人能指点我一下,那将非常有帮助。
我使用的版本如下:
mysql2 0.5.2
mariadb-server-10.3
discourse master git commit 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 上运行。如果是这样,我会继续排查问题。感谢您的快速帮助!
感谢大家的帮助,迁移过程总体顺利。虽然有一些附件缺失,但整体结果非常理想。
给未来阅读此帖的朋友:我从 Vb3.8.7 进行了迁移。
由于我的数据库结构与脚本不完全匹配(但非常接近),我需要对 vbulletin.rb 中的 SQL 查询进行一些修改。为了加快进度,我决定放弃自定义标题。
Github 差异对比:File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub
对于替换 MySQL 的 MariaDB 安装,我使用了以下命令:
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| 时,该类别看起来是有效的。我还在 def create_category(位于 base.rb 中)中,在调用 .save! 之前,记录了 opts、import_id 和 new_category。根据函数的预期,所有数据似乎都是有效的。
有人以前遇到过这种情况吗?
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)会修复它们。


