将 phpBB3 论坛迁移到 Discourse

看起来当前版本的脚本存在一些错误。请尝试更新您的 settings.yml 文件,并确保 new_categoriescategory_mappings 如下所示:

new_categories: []
category_mappings: {}
11 个赞

@gerhard 谢谢你的提示,我马上试试。

1 个赞

非常感谢,它起作用了。

3 个赞

一条帖子已合并到现有主题:在 Windows 10 上安装 Discourse 进行开发的初学者指南

这是个好消息!谢谢。我手头有一个 3.2 版本的测试 SQL 转储文件,打算先拿来试试,同时也会复制一份 3.3 版本来尝试。真希望能直接请你们帮忙处理,可惜囊中羞涩……哈哈。

无论如何,再次感谢,期待尝试这个功能!

2 个赞

导入过程中遇到问题。运行导入脚本时,它将我的 SQL 转储文件放入,并显示“phpBB3 导入正在开始…",但随即抛出回溯,报错如下:

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.0/lib/bootsnap/compile_cache.rb:29:in `permission_error’: bootsnap 没有权限在 ‘tmp/cache/bootsnap/compile-cache’ 中写入缓存条目(或者,可能性较小的是,没有权限读取 ‘/usr/local/lib/ruby/2.7.0/set.rb’)(Bootsnap::CompileCache::PermissionError)

显然这是一种权限错误,但我正在尝试确定需要做什么来修复它。感谢任何帮助!

1 个赞

更新!问题已解决!在容器中快速执行 chmod 命令就修复了该问题。

使用 phpBB 3.3 数据库进行了测试,按照您建议的修改后,运行效果完美!正在进行更全面的测试,目前除了一些预期的 BBCode 问题外,其他一切基本就绪。用户、消息、帖子等都已成功迁移。唯一看似未生效的是密码迁移。这属于小问题。模块已安装并显示加载成功,但我不确定为何密码未能转移。不过这无关紧要,我最终能将 phpBB 弃用,感到十分兴奋。

再次感谢 @gerhard 的辛勤工作!

2 个赞

这很好。欢迎随时私信我,提供 BBCode 问题的示例。我对 phpbb_posts.post_text 列的值很感兴趣。

3 个赞

我尝试了两次导入 phpBB3(2.7 版)。
第一次导入时,没有任何主题被导入,用户数据也出现了混乱。
我重新彻底重装了 Ubuntu 并重新执行所有操作,但这次卡在了 import_phpbb3.sh 阶段:它加载了数据库,随后因以下错误而停止:

The phpBB3 import is starting...

Traceback (most recent call last):
        20: from script/import_scripts/phpbb3.rb:13:in `\u003cmain\u003e'
        19: from script/import_scripts/phpbb3.rb:14:in `\u003cmodule:ImportScripts\u003e'
        18: from script/import_scripts/phpbb3.rb:15:in `\u003cmodule:PhpBB3\u003e'
        17: from script/import_scripts/phpbb3.rb:15:in `require_relative'
        16: from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `\u003ctop (required)\u003e'
        15: from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:5:in `require_relative'
        14: from /var/www/discourse/script/import_scripts/base.rb:16:in `\u003ctop (required)\u003e'
        13: from /var/www/discourse/script/import_scripts/base.rb:16:in `require_relative'
        12: from /var/www/discourse/config/environment.rb:4:in `\u003ctop (required)\u003e'
        11: from /var/www/discourse/config/environment.rb:4:in `require'
        10: from /var/www/discourse/config/application.rb:70:in `\u003ctop (required)\u003e'
         9: from /var/www/discourse/config/application.rb:71:in `\u003cmodule:Discourse\u003e'
         8: from /var/www/discourse/config/application.rb:96:in `\u003cclass:Application\u003e'
         7: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
         6: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
         5: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
         4: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:44:in `require'
         3: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
         2: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
         1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': cannot load such file -- mocha/version (LoadError)

非常感谢您的任何帮助。

1 个赞

phpBB 3.3 更新说明:有些问题我本应在转移论坛前就注意到。3.3 版本中附件的处理方式发生了变化:不再使用原始文件名,而是为每个附件分配一个唯一标识符,并在 phpbb_attachments 表中进行交叉引用。该唯一文件标识符的格式为 USERID_可能包含随机字符串。

不再需要文件扩展名或其他信息,因为 phpBB 3.3 会从表中自动识别。目前我尚未找到自动化处理的方法,因此正在分批恢复旧图片。由于我在 3.3 更新前保留了一份旧版图片备份,或许能加快处理速度。但请注意,从 3.3 版本导入数据可能会导致附件损坏,尤其是如果您像我一样拥有数千个附件,那将会非常棘手。不过也好,毕竟自愿当小白鼠也算是一种运气吧!

2 个赞

那是它提供的全部信息吗?我的显示由于权限问题无法加载 tmp/ 目录,因此我在导入容器中对该目录执行了 chmod -R 777。请注意,这仅针对导入操作,不会影响您的“应用”容器。

2 个赞

我成功从 phpBB 3.2 导入了数据,但需要执行以下步骤:

  • 手动在内部 MariaDB 中导入数据库:mysql -u root -p phpbb < /shared/import/mysql/data/phpbb_mysql.sql
  • 设置 settings.yml 文件:new_categories: [] category_mappings: {}
  • 多次重复运行导入脚本,因为帖子和主题在首次导入时会报错

完成这些后,一切运行正常……

2 个赞

大家好。
我遇到了一个问题。
我的 Discourse 实例地址是 https://discourse.example.com/
我想从 https://forum.old.example.com/ 导入数据库。
我已按照本指南中的所有步骤操作:
我导出了数据库,将其命名为 phpbb_mysql.sql,并放入以下目录:

/var/discourse/shared/standalone/import/data/

执行以下命令后:

/var/discourse/launcher enter import
import_phpbb3.sh

我收到了如下错误:

表 ‘phpbb.phpbb_config’ 不存在

这是否与 settings.yml 的配置有关?

请帮我解决这个问题。

1 个赞

请确保 table_prefix 正确。控制面板中是否显示为 phpbb_

2 个赞

是的,我的前缀是正确的

1 个赞

如果我没看错的话,您的 settings.yml 中的 schema 应设置为 teamlab_forum_saas

2 个赞

这是数据库的名称。这是模式吗?

1 个赞

没错。在 MySQL 中,schemadatabase 同义:slightly_smiling_face:

3 个赞

稍等,我试试看。

1 个赞

太棒了。非常感谢,这很有帮助!:+1: :clap:

2 个赞