DDo
(Dorothea Dorsch)
458
在我成功将导入器用于第一个测试环境后,我现在希望将旧论坛再次/全新导入到一个新的、将成为正式生产环境的系统中,但这次失败了。
我收到了以下错误:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: 字符编码不兼容:ASCII-8BIT 和 UTF-8 (Encoding::CompatibilityError)。
看起来这个问题发生在第三个用户身上,而该用户的用户名中包含变音符号(umlaut)。
那么,自上次成功以来我做了哪些更改?
- 新的虚拟机,运行 Ubuntu 18.04.3 LTS(旧的是 16.04)
- 更新了 Discourse(最新版本)
- 启用了“Unicode 用户名”支持,包括 [äöüßÄÖÜẞ],因为我的许多用户的用户名中包含变音符号(第一次导入时未启用此设置,导致用户导入后变音符号上的点丢失)
- 预先安装了 migratepassword 插件(上次是稍后安装的)。
有任何线索可以指出问题出在哪里吗?我真的很希望能在不更改用户名的情况下完成用户迁移。
1 个赞
gerhard
(Gerhard Schlager)
459
看起来这触发了 migratepassword 插件中的一个 bug。在我的测试中它能正常工作,所以我不确定这里发生了什么。我建议你在迁移过程中禁用该插件。反正迁移期间并不需要它。
6 个赞
Queth
(Q)
461
你好,我试图在本地环境中进行试运行,看看能否将我的论坛迁移到 Discourse。
我使用了这篇安装指南来安装 Discourse。
我本地有一个 phpBB3 数据库的导出文件。
我已在 Mac 上通过 Docker Desktop 安装了本地版 Discourse。
现在我正尝试按照该主题中的说明操作,但遇到了困难,因为我使用的是 Docker 而非 Ubuntu,且是在本地环境中。因此,我不知道该如何继续:
我的 Discourse 目录中没有 app.yml 文件。
有人能告诉我接下来该采取哪些步骤吗?
提前非常感谢!
1 个赞
gerhard
(Gerhard Schlager)
462
很抱歉,我没有使用 Mac、Docker 以及您环境设置的经验。您或许可以大致参考使用开发环境导入的指南,但我无法为此提供具体支持。
1 个赞
pfaffman
(Jay Pfaffman)
463
我认为您最好遵循“官方安装指南”(即使是在您的本地 Mac 上),并以此方式运行安装程序。
4 个赞
Queth
(Q)
464
太好了,我成功完成了导入!
最后,我决定直接使用 DigitalOcean 的 Droplet,然后按部就班地操作。结果成功了!
关于 Sidekiq 有个问题,@gerhard 你提到:
这具体是做什么的?在论坛中可以操作之前,我必须等待它完成吗?
2 个赞
pfaffman
(Jay Pfaffman)
465
除非你需要备份以恢复到不同的服务器,否则你没问题。你可以直接使用它,Sidekiq 会处理相关任务。
4 个赞
您好,目前我尝试将 phpBB 3.1 论坛的数据导入 Discourse,但导入投票功能无法正常工作:
如果帖子所有者(即投票创建者)已被删除,在导入过程中我会收到以下错误信息:
创建帖子 70978 时出错。已跳过。[“您无权创建投票。”]
对于以下投票选项:
<12
12
12
我收到以下错误信息:
创建帖子 345655 时出错。已跳过。[“投票选项必须互不相同。”]
那么,我该如何解决这些问题?
提前感谢!
此致
1 个赞
pfaffman
(Jay Pfaffman)
469
你需要创建该用户,或者修改脚本,例如在所有者不存在时使用系统账户。
1 个赞
已正常导入来自已删除用户的普通帖子。我该如何修改导入脚本,以便也能导入来自已删除用户的投票?
1 个赞
helmi
(Helmi)
471
我目前正尝试首次从 phpBB 迁移,想知道之后如果导出 Discourse 备份,是否会包含导入的所有元数据(例如 phpBB 的原始帖子 ID)。原因是我打算在一台性能更强的机器上进行导入以加快速度,之后再将论坛部署到 VPS 上,并可能在将所有内容迁移到 VPS 后再进行一次增量导入。我想知道仅通过 Discourse 备份和重新导入是否足够,或者是否最好以其他方式导出数据库(具体是哪种方式?)
还有一个问题:导入器中的 URL 重写对于之后更换域名是否安全?我计划先使用不同的域名或子域名进行初始迁移,之后再切换到正式域名。
3 个赞
pfaffman
(Jay Pfaffman)
472
是的,备份中包含自定义字段里的原始帖子 ID。在云端执行最终导入应该没问题。
更改主机名需要做一些工作。Change the domain name or rename your Discourse
4 个赞
helmi
(Helmi)
473
我刚刚完成了首次测试迁移,在开始其他工作之前,我想先感谢 @gerhard 以及所有为此做出贡献的人。第一次尝试就能如此顺利,实在令人惊叹。我大约花了 24 小时导入了近 90 万篇帖子,包括用户、私信等内容,整体效果对于首次尝试来说非常出色。能有如此优秀的导入工具来完成这项工作,真是太棒了。
不过还有一些问题,其中最重要的是我目前正在排查的:部分内部链接似乎完全出错,而其他链接则表现良好。更准确地说,出错的链接远少于正常的链接。我正在尝试找出哪些链接未生效的模式。有人能提供一些关于内部链接转换机制的见解吗?是否存在某些可能导致失败的陷阱?
顺便一提:导入完成后,我最初发现引用中的所有头像都缺失了,但后来发现它们似乎是动态生成的。大约 20 分钟后,所有头像都正常显示了。真是令人惊叹 
关于导入时间:此次操作是在 Hetzner 的 4 核 VPS 上进行的,使用了独占 CPU 核心。我打算在裸金属服务器上重新尝试此次导入,以进一步优化迁移时间。不过首先需要确认 Discourse 备份的迁移方式是否可行。
5 个赞
gerhard
(Gerhard Schlager)
474
6 个赞
helmi
(Helmi)
475
这是一个有趣的提示。在我检查的一些案例中,我不明白为什么会这样,但我肯定会沿着这个方向继续排查。奇怪的是,在我的情况下,它链接了错误的帖子。如果失败,我本以为它应该什么都不做,或者保持链接不变。不幸的是,我对 Ruby 的了解几乎为零,但我还是会查看一下代码。
有什么办法可以绕过这个问题吗?我认为在教程类帖子中,如果帖子被反复编辑和补充,并添加了链接,这种情况可能会频繁发生。除了手动修改这些帖子之外,还有其他解决办法吗?
感谢您的帮助!
1 个赞
helmi
(Helmi)
476
嗯,刚刚注意到用户组尚未被导入,同时也发现初始帖子中并未列出它们,但实际上用户组是导入器中首先列出的项目之一。我想知道是否有办法导入用户组,包括将用户关联到这些组?还是说该功能目前尚不可用?如果是后者,我们可能需要寻找一个变通方案。
1 个赞
pfaffman
(Jay Pfaffman)
477
是的,这很奇怪。这表明你的一些本地链接格式与导入脚本预期的格式不同,导致正则表达式匹配到了错误的帖子。如果有人后来编辑了某个帖子,将其指向一个该帖子最初撰写时还不存在的帖子(你确认过这种情况吗?),那么他们可能使用了其他方法来创建链接,从而混淆了脚本。
每次导入(尤其是针对成熟论坛的导入)都如此独特,这令人惊讶。很少有导入工作仅仅是运行脚本那么简单(不过,我想,如果导入过程确实存在复杂情况,人们可能更愿意聘请我)。
1 个赞