将 phpBB3 论坛迁移到 Discourse

你好,

我刚成功导入了我的 phpBB 论坛(版本 3.2.10),没有任何问题(感谢 @gerhard 及各位)……

嗯,几乎没问题 :wink::主题中没有回复。

有什么建议吗?

提前感谢。

1 个赞

你好 @jmbeuken,请多次运行 import_phpbb3.sh,然后检查 http://yoursite/sidekiq 以确认 Sidekiq 是否已完成该任务。

3 个赞

谢谢:它起作用了!

2 个赞

我现在意识到,正则表达式只适用于论坛的 URL。

转换后,我发现这些预配置如下:

/(viewforum.php\\?)(?:.*\u0026)?(f=\\d+).*/\\1\\2 可以完美工作,但 /(viewtopic.php\\?)(?:.*\u0026)?(t=\\d+).*/\\1\\2 总是返回 404 错误,因为地址未被转换,仍然保持为 https://www.mysite.com/viewtopic.php?t=123

这是为什么?正则表达式看起来一样,而且我是从外部链接测试的。

更新!(:grimacing:

2 个赞

看起来这不是永久链接规范化正则表达式的问题,因为它能正确选择。您是否在“管理” → “自定义” → “永久链接”下使用了格式为 viewtopic.php?t=123 的永久链接?

2 个赞

你好 Justin,没有,我只有图片中显示的那些。

谢谢

1 个赞

嘿,路过一下,想感谢你的这个提示。我正在将一个较大的 PHPBB 3.2 论坛迁移到 Discourse,SQL 转储文件大约 1.3GB,我本以为在第一个关卡就栽了跟头!

通过将 new_categories 定义为空列表,将 category_mappings 定义为空对象,这实际上是在做什么呢?会不会有负面影响?

1 个赞

这些设置仅在将数据导入到具有现有分类结构的 Discourse 论坛时生效。

1 个赞

你好,

我导入了一个拥有 2518 名用户的 phpBB3 站点。
运行几次“import_phpbb3.sh”脚本后,一切似乎都稳定了……
但我注意到有 1108 名“0 级”用户和 1410 名“1 级”用户:区分这些用户的关键是什么?
第二天,我发现只剩下 258 名“0 级”用户了:这个“清理”过程是如何进行的?是因为没有发帖?还是没有活动?

我尝试转移密码:不幸的是,出现了很多错误(用户名等于密码、长度小于 9 等),脚本每次都崩溃。我在 phpBB3 上修正了这些问题(删除了用户 ;-)),然后重新启动脚本:这太痛苦了,所以我停下来了。:roll_eyes:
有没有一种方法,在发生错误时设置一个默认密码?(我不懂 Ruby :pensive:

提前感谢。

1 个赞

你需要添加一些代码来检查密码长度,然后将其删除或使其长度超过 9(最小长度实际上是 8,所以我不确定 9 这个值是否准确)。

2 个赞

感谢 @pfaffman
抱歉,我刚才没表达清楚……
在 phpBB3 实例中,密码最小长度原本是 6 个字符,后来我在几年前升级 phpBB3 时将其改为了 8 个字符……
因此,可能存在大量长度小于 10(Discourse 的默认值)的密码。

我想我们可以修改文件 spec/components/validators/password_validator_spec.rb,但我有点不太理解其中的逻辑…… :anguished:

回头见!

1 个赞

你可以试试,但我不确定是否有效,而且操作起来很棘手,因为升级后可能会被撤销。我有个更简单的建议:直接不导入那些太短的密码。我猜他们自己也记不住这些密码。

不过,也许其他人有更好的主意。

1 个赞

你好,

在导入过程中,文件上传出现问题:

4497 / 12442 ( 36.1%)  [1122 items/min]  
创建上传失败:No such file or directory @ rb_sysopen - /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90
上传失败 /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90

但该文件确实存在:

root@gui2:/var/discourse/shared/standalone/import# ll data/files/89_d634760ee03ba0148d7a387a19794f90
-rw-rw-rw- 1 nwz003 48 125552 Mar  6  2012 data/files/89_d634760ee03ba0148d7a387a19794f90

并且在 shared/standalone/import/settings.yml 中配置如下:

phpbb_base_dir: /shared/standalone/import/data

有什么建议吗?

谢谢

1 个赞

尝试在设置中执行 /shared/import/data——在容器内部,/var/discourse/shared/standalone 目录被映射到 /shared

3 个赞

谢谢 @justin:这就是窍门 :slight_smile:

4 个赞

我刚才在运行 import_phpbb3.sh 导入一个 phpBB 3.0.12 数据库的转储文件时遇到了这个问题:

正在创建用户组
无法将用户 1 添加到组 11
PG::NotNullViolation: 错误:关系 "group_users" 的列 "user_id" 中的空值违反了非空约束

后来发现,我的 phpBB 数据库中 phpbb_user_group 表里存在“待处理”的用户。(待处理用户是指已申请加入群组但尚未获得批准的用户。)我删除了 user_pending1 的行,之后导入程序便能够继续运行了。

1 个赞

另一个关于导入 phpBB 3.0.12 的注意事项:在首次运行导入帖子时,我看到了大量类似以下的消息:

    65427 / 65812 ( 99.4%)  [2238 项/分钟]  父帖子 68380 不存在。跳过 68382:Shuffling an At Start Stack

(“Shuffling an At Start Stack”是我论坛中特定帖子的标题。)

当我启动应用程序浏览已导入的内容时,发现只导入了每个帖子的首条回复,而没有后续回复。

看来导入器需要对我的数据库进行第二次处理(只需再次运行 import_phpbb3.sh)。第二次运行时,所有缺失的父帖子似乎都已存在,不再出现“父帖子不存在”的提示。

编写导入器本就困难,而能够成功在出现问题后继续执行的导入器更是难上加难。你们竟然两者都做到了。太棒了!

3 个赞

这表明 base.rblookup.rb 中可能存在一些问题。我在通用 JSON 导入器中也注意到过类似的问题,但当时以为是该导入器本身的问题。听起来像是查找函数没有正常工作。我猜测是创建帖子的函数没有将新帖子添加到查找函数所使用的数据结构中。

我会在接下来的一两天内尝试查看一下。

1 个赞

@pfaffman 我刚才进行的是一次试用导入;我可能还会再进行一次。因此,如果您几天后有可供我测试的内容,我很乐意尝试。

1 个赞

看来 @topics 和/或 @posts 并未由主题/帖子创建者进行更新。在我的脚本中,我一直在代码中直接搜索 TopicCustomField,而不是依赖查找函数。

我查看了代码和最近的提交记录,但没有发现明显的解释。

1 个赞