这都很典型。
我认为你建议的更改可能不会破坏其他导入。通常会有一系列类似的更改,然后还有许多特定于导入的更改,弄清楚哪些是哪些并只用那些进行再次测试将是一项繁重的工作,因此不会创建 PR。
很高兴你完成了!
这都很典型。
我认为你建议的更改可能不会破坏其他导入。通常会有一系列类似的更改,然后还有许多特定于导入的更改,弄清楚哪些是哪些并只用那些进行再次测试将是一项繁重的工作,因此不会创建 PR。
很高兴你完成了!
谢谢 Constanza,这个链接非常有帮助。 ![]()
谢谢 Jay 提供的信息。我将在迁移完成后稍后进行 PR,如果这有助于创建一个更好的 phpBB3 迁移工具的话。
当前的脚本还会忽略我在其他迁移中遇到的 [size=XXX 标签。
在我当前的迁移中,我在我的导入器中编写了一个简单的脚本,并使用 XXX 的值将这些标签替换为 Discourse 支持的 \u003csmall\u003e内容\u003c/small\u003e 和 \u003cbig\u003e内容\u003c/big\u003e。
但这只是我个人的需求,更妥善的(普遍来说)解决方案可能是像导入脚本处理 [color] 标签那样,直接移除这些 [size 标签。
感谢 @Canapin 的所有反馈。非常欢迎提交 PR!
另外,一个小小的预告:我们正在开发一个解决方案,它应该能让所有导入——不仅仅是 phpBB——变得更好、更快、更容易定制,并摆脱那些恼人的 BBCode 转换问题…… ![]()
在导入帖子时,我遇到了一堆这样的错误(并非所有帖子都出现):
251491 / 251672 ( 99.9%) [14140 items/min] 创建帖子 354629 时出错。正在跳过。
undefined method `[]' for nil:NilClass
/var/www/discourse/script/import_scripts/phpbb3/importers/post_importer.rb:66:in `block in map_first_post'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `try'
/var/www/discourse/script/import_scripts/base.rb:576:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:523:in `block in create_posts'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/script/import_scripts/base.rb:510:in `create_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:192:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:874:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:873:in `loop'
/var/www/discourse/script/import_scripts/base.rb:873:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:254:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:188:in `import_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:38:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:22:in `perform'
script/import_scripts/phpbb3.rb:33:in `<module:PhpBB3>'
script/import_scripts/phpbb3.rb:14:in `<module:ImportScripts>'
script/import_scripts/phpbb3.rb:13:in `<main>'
但我找不到原因。
有什么线索吗?
我该如何检查我是否真的缺少帖子?找不到如何输出与“创建帖子 354629 时出错”对应的(例如帖子内容)数据。
我不记得前几天其他导入测试中出现过这个错误,但也许我没注意……这可能与这个已知问题有关吗?
251490 / 251672 ( 99.9%) [14140 items/min] 父帖子 337703 不存在。正在跳过 354628:vw-camper est malade !?
关于这个问题,我运行了两次导入脚本。
确保在 settings.yml 文件中设置 tag_mappings: {},如果您不使用此功能。
我感觉很蠢!我甚至想过这件事,但我非常确定我以前没有遇到过这个错误,所以我没有尝试…… ![]()
它解决了问题,非常感谢。
我猜你现在不能说太多,但关于它将如何工作,以及何时可以使用这个新东西的可用导入脚本,有什么线索吗?
我今年可能还会迁移另一个 phpBB,所以了解更多信息对我来说会非常有趣。 ![]()
您好,我正在测试将 phpbb 3.2 迁移到 discourse,论坛规模相当大(30k 主题 / 600k 帖子),几乎所有内容都正常工作,除了几个未导入的主题(“父帖子 xx 不存在”),多次运行也未解决,但这不算问题。
我的主要问题是,后续使用新数据进行的导入(通过 import/mysql/imported 文件的 sha256sum 验证)无法在 Discourse 中导入新帖子。我在早期过程中遇到了一个异常,不知道是否有关联:
Failed to map post with ID 6815
BIGINT UNSIGNED value is out of range in '(`phpbb_prod`.`o`.`poll_option_total` - (select count(distinct `phpbb_prod`.`v`.`vote_user_id`) from `phpbb_prod`.`phpbb3_poll_votes` `v` join `phpbb_prod`.`phpbb3_users` `u` join `phpbb_prod`.`phpbb3_topics` `t` where ((`phpbb_prod`.`u`.`user_id` = `phpbb_prod`.`v`.`vote_user_id`) and (`phpbb_prod`.`v`.`topic_id` = `phpbb_prod`.`t`.`topic_id`) and (`phpbb_prod`.`v`.`poll_option_id` = `phpbb_prod`.`o`.`poll_option_id`) and (`phpbb_prod`.`t`.`topic_id` = `phpbb_prod
这是帖子中嵌入的投票问题吗,从显示的 SQL 来看?
祝您有美好的一天!
我现在还不能说太多,因为它仍在开发中。计划可能会改变……但“今年”是一个不错的猜测。![]()
BIGINT UNSIGNED 值超出范围
嗯,这个投票中有这么多匿名投票吗?
也许是这样的?https://stackoverflow.com/a/11704174/451338
找到解决方案后请告诉我,或者创建一个 PR 来修复它。我将不胜感激。
投票是从论坛一开始就有的,我当时不负责,但我认为匿名用户从未被允许发布/回答投票。
使用
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
我能够查询所有投票,其中有 2 个投票我得到了负数的“匿名投票”。看起来这个论坛实际上允许匿名投票 ![]()
感谢 @gerhard 的提示,我将深入研究……
我目前正在研究将 phpBB 论坛迁移到 Discourse,问题是我们的 phpBB 使用的是 Postgres 而不是 MySQL,所以我也想将其改编以支持 Postgres。
有人能给我一些关于如何最好地进行这项工作的建议吗?因为我希望每个人都能从这项工作中受益,所以我想采用一种被上游接受的方法,而不是仅仅为了让它工作而进行粗略的修改。
据我所知,这似乎主要是通过使用正确的数据库适配器为 PostgreSQL 模式添加正确的 SQL 语句来完成的,但我不知道 Docker 容器的整个编排需要如何改编,以便根据配置文件中指定的数据库类型正确地启动一个 PostgreSQL 实例,将数据库转储导入其中,并针对它执行语句。
有一个用于在 PostgreSQL 上运行的 phpBB 的批量导入脚本。你看到它了吗?discourse/script/bulk_import/phpbb_postgresql.rb at main · discourse/discourse · GitHub
但是,我认为它最近没有被使用过,所以它可能已经损坏,并且可能无法与当前版本的 phpBB 一起使用,因为 Markdown 存储格式已更改。
![]()
无论你选择哪种方式,除非你真的想,否则我不会花太多时间来完善你的解决方案。当前的导入脚本将在今年某个时候被弃用……
谢谢,我之前不知道!也谢谢你提醒我脚本将要被弃用,所以我想为它们上游一个主要功能可能不值得,因为它们很快就会被弃用?有计划替代它们吗?
是的,当然会有替代品。
我还在想另一件重要的事情,除了 disable_edit_notifications,我还需要设置其他什么才能确保 Discourse 不会向任何导入的用户发送电子邮件?因为目前该实例不是公开的,我们只是在试验导入,可能需要多次尝试才能达到足够好的效果,所以我想避免发送任何电子邮件。
您正在查找 disable_emails 站点设置…
虽然 Discourse 支持行内 [b]文本[/b],但它不会解析带有换行的文本块。
[b]例如,如果我在帖子中有以下文本…
在空行后继续我的行,我会关闭 bbcode,文本将不会被转换为粗体[/b]
[i] 和其他标签也一样。
我在导入中找不到一个干净的解决方案。有什么想法吗?![]()
这不是一个理想的解决方案,但我至少有一个 B 或 C 计划的想法。
导入后,您可以将 [b] 重新映射到 \u003cb\u003e,将 [/b] 重新映射到 \u003c/b\u003e,因为 \u003cb\u003e 在此处对块有效
\u003cb\u003etest
test\u003c/b\u003e
\u003cb\u003etest
test\u003c/b\u003e
但在大型论坛上,这需要一段时间 ![]()
好主意!
我的论坛还没有导入,所以我仍然可以处理导入器。
使用 <strong> 和 <em> 是否比它们本身的语义“属性”更有意义?
那真是个好消息!
我认为这首先是值得尝试的好事。