JPD
(JPD)
2024 年3 月 20 日 19:12
1
您好,
phpBB3.3.3 是否受支持,还是仅支持 3.3.0?在执行 1.5 步骤时:
/var/discourse/launcher enter import
来自 将 phpBB3 论坛迁移到 Discourse - 文档 / sysadmin - Discourse Meta
我收到了(已尝试两次)响应:
x86_64 arch detected.
Error response from daemon: No such container: import
如果我使用
/var/discourse/launcher enter import.yml
响应是:
x86_64 arch detected.
ERROR: containers/import.yml.yml does not exist or is not readable.
Available configs ( app, import )
这有可能成功吗?
谢谢
您好,欢迎!
我假设您已从头开始遵循了指南;/var/discourse/containers/import.yml 文件实际上是否存在?
看起来配置文件已被删除。
1 个赞
JPD
(JPD)
2024 年3 月 20 日 19:43
3
是的,就像上面的消息一样,“containers”目录中同时存在 app.yml 和 import.yml。
如果我理解正确的话,您在之前的步骤中没有遇到任何问题,创建/编辑了 app.yml 旁边的 import.yml,重建了 import 容器,现在甚至无法进入它。是这样吗?这确实很奇怪!
此命令返回什么? ls -l /var/discourse/containers
JPD
(JPD)
2024 年3 月 20 日 20:19
5
仍然是一样的:app.yml 和 import.yml(还有一个 app.yml 的“bak”文件)。
可能存在“问题”,因为我一直在尝试将其安装在 Lightsail 1GB 上(最初是 940MB,更新 Ubuntu 后变为“921MB”)。我使用了官方安装程序,安装的是 3.3.* beta 某个版本(而 Wiki 显示 3.2 是最新稳定版本)。安装需要 1 小时 15 分钟到 1 小时 20 分钟,并带有 4GB 交换空间。“launcher rebuild import”大约需要 2 小时。
是否可能由于内存不足而导致某些进程被错误终止?
顺便问一下,2GB 设置的备份文件在 1GB 设置中是否可读?
成功了吗?重建后,容器应该会启动。
如果容器未启动,您将无法进入容器(./launcher start import)
JPD:
低内存情况是否会导致某些进程异常终止?
很可能是这样。这里有几个关于低内存/交换空间和重建失败的主题——通常别无选择,只能增加 RAM/交换空间。
我不是这方面的专家,但希望有人能给你更好的见解。
1 个赞
JPD
(JPD)
2024 年3 月 21 日 00:03
7
Apparently, RAM is an issue. For the Lightsail 2GB/2GB, the clean installation is about 3.5-4x faster and the rebuilding of the import container was about (or even over) 10x faster.
Still, I’m afraid the import script might not work for phpBB 3.3.3. Anyway, I tried twice with the same result: only one word from one category name (out of ~10 categories) was imported as one empty “category”. The MySQL textual dump is pretty small 2.66MB. All table prefixes are as required. No images, no smilies etc.
All in all, no forums, no forum categories or posts, but all (a few hundred) users were imported correctly along with their statistics.
It seems phpBB 3.3.3 was the update that changed something about the used MySQL version, but this is a dump file here, so it shouldn’t matter after all.
Any ideas what else can be checked?
RAM 确实 是个问题。对于 Lightsail 2GB/2GB,干净安装的速度快了约 3.5-4 倍,导入容器的重建速度快了约(甚至超过)10 倍。
不过,我担心导入脚本可能不适用于 phpBB 3.3.3。无论如何,我尝试了两次,结果都一样:在约 10 个类别中,只有一个类别名称中的一个单词被导入为一个空的“类别”。MySQL 文本转储文件很小,只有 2.66MB。所有表前缀都符合要求。没有图片,没有表情符号等。
总而言之,没有论坛,没有论坛类别或帖子,但所有(几百个)用户及其统计数据都已正确导入。
似乎 phpBB 3.3.3 是更新了使用的 MySQL 版本,但这是一个转储文件,所以最终应该无关紧要。
还有什么可以检查的吗?
JPD
(JPD)
2024 年3 月 21 日 09:38
9
您是指打开/读取/解析那个 2.6MB 的文本文件需要 4GB 内存吗?您是 Discourse 的开发者吗? imo,一个读取该转储(提取 Discourse 使用的所有数据)并将其保存到其他任何内容的二进制可执行文件应该在 200KB 左右,加上一个大约 100KB 的缓冲区(对于这个简单的操作,无需考虑包含整个 MariaDB)。
我认为问题不在于 RAM。该过程很快,并且显示了已导入表的导入进度。它没有“退出”。用户表位于转储的末尾,在主题等之后。
我想再次尝试,尝试将用户表复制/粘贴到顶部,并执行上述手册/页面中的相同步骤(同样使用 phpMyAdmin 而不是 phpBB 创建的转储),但现在 Discourse 拒绝开始该过程,尽管没有添加任何连接数据,它却尝试远程连接。
我重建了导入容器,但也许需要先删除某些东西?
pfaffman
(Jay Pfaffman)
2024 年3 月 21 日 10:33
10
我靠支持论述为生,进行过无数次迁移,可能有一百次或更多。2GB 应该能用,特别是如果你只有几千个主题和用户,但既然你只需要很短的时间,更多的内存并不贵,而且无害。我同意这可能不是问题所在。
脚本运行时,它是否计算了分类、用户、主题和帖子?
脚本会跳过已导入的数据,并创建自定义字段数据以在将来跳过这些数据,因此要再次运行它,你需要清除 discourse 数据库。既然你说它没有导入任何内容,那么是否需要这样做还不清楚。看起来要么是它导入了但你因为某种原因找不到它,要么是它失败了因为它没有找到数据,你需要以某种方式修改脚本;在这两种情况下,你都不需要清除数据库。
JPD
(JPD)
2024 年3 月 21 日 12:03
11
“既然你说它没有导入任何东西”
不完全是:
“所有(几百个)用户及其统计数据都已正确导入”
我再次尝试重建容器。设置相同。我没有更改任何内容,在以下步骤之后:
import_phpbb3.sh # 在 Docker 容器内部
脚本现在显示:
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:97:in `connect’: 未知数据库 ‘phpbb’ (Mysql2::Error)
也许还有一些以前使用的临时文件需要删除?
JPD
(JPD)
2024 年3 月 21 日 22:38
12
我最终使用了 phpMyAdmin 的转储。是否有任何示例(或更详细的规范)说明如何在(导入)settings.yml 中创建映射部分?
我的 php_forums 表如下所示:
forum_id, MEDIUMINT(8) ... parent_id, MEDIUMINT(8) ...
3 0
8 3
7 3
9 3
10 3
11 0
12 11
13 11
14 11
15 11
17 3
似乎无论我使用哪个 ID,无论我是否还指定了“new_categories: ”部分,导入容器生成的消息都是可以的:
创建新类别
11 / 11 (100.0%) [2803 个项目/分钟] n]
创建类别
11 / 11 (100.0%) [2704 个项目/分钟]
但创建的是两个主类别(它们是 parent_id 为 0 的 phpBB 中的“论坛”),以及每个类别下的一个空子类别。该过程确实导入了所有帖子,但它们都是“孤立的”。
pfaffman
(Jay Pfaffman)
2024 年3 月 22 日 01:16
13
看起来您的 phpbb3 版本有些东西发生了变化。
JPD
(JPD)
2024 年3 月 22 日 02:18
14
实际上,我在修复自己的错误方面取得了一点进展:我只是在 settings.yml 文件中使用 C/C++ 风格在行尾添加了注释。这显然阻止了子论坛被“处理”(尽管没有显示任何错误)。
我将类别和子类别添加为“新建”并映射了旧 ID。
仍然有所有未附加到任何类别的帖子。这些主题是否存储在一个 Postgres 表中?如何删除它们?
JPD
(JPD)
2024 年3 月 22 日 15:46
15
我在 phpbb_mysql.sql 中添加了一些修复,至少可以使脚本创建所有原始类别,但这还不够。
在处理主题/帖子时,只有一长串类似以下的错误:
父帖子 [some id] 不存在。跳过 [some id]
当然,没有帖子被导入。
我想知道是否有人能确认默认脚本不适用于 phpBB 3.3.3 表?
JPD
(JPD)
2024 年3 月 23 日 20:18
16
最终,我能够使用 phpBB3.3.3 的转储文件,而无需将类别定义为新的,也无需在 settings.yml 文件中进行所有映射。
使用原始的 phpBB_mysql.sql 转储文件时,迁移脚本在加载类别时会停止,并显示有关“空类别正文”的错误。
如果主类别(没有父类别)的“phpbb_forums”表中的“forum_desc”字段为空,则会发生这种情况。
在仅部分导入第一个类别后,其余部分似乎会出错。
使用全新安装并在上述表字段中输入一些文本似乎可以解决此问题。