我把它们放进去了,但没有任何区别。
不确定这些是粘贴时产生的错误,还是您的 yml 文件中实际的样子,但这些会导致问题。(某些注释末尾的换行符,导致存在第二行未注释的行)
您的列表项缩进不正确。
上面应该写成
new_categories:
- forum_id: general
name: General
我建议使用 https://www.yamllint.com/ 来验证您的配置文件。
感谢您的所有回复。我很快就发现,在导入容器外部编辑 settings.yml 不会影响正在运行的内容。我也明白了 yml 空格的问题,并更正了我的设置文件。无论如何,phpBB 论坛的导入进行得很顺利,除了……
我在 phpBB 上的用户名与我在 Discourse 上的管理员帐户相同。我无法登录,并且有一条消息显示:
所有发件电子邮件均已被管理员全局禁用。不会发送任何类型的电子邮件通知。
因此,我无法收到重置密码的电子邮件。这是数据库设置吗?如果是,我能否使用容器的有限资源更新该字段?还有其他想法吗?
请注意,我安装了 migratepassword 插件,但似乎不起作用(也许是因为我的密码少于 15 个字符)
您可以通过 rails 控制台启用管理员用户的电子邮件:
./launcher enter import
rails c
> SiteSetting.disable_emails = "non-staff"
您也可以直接从容器重置密码,无需使用电子邮件,方法是运行:
./launcher enter import
rake admin:create
我可以建议对这份文档(以及代码)做一些修改:
- 这不再需要了,因为
disable_edit_notifications设置已不存在。disable system edit notifications具有提到的功能,并且默认启用。
app.yml中的两行 SSL 默认未被注释掉,因此删除这两个#会使摘录更准确地反映其应有的样子。
-
此模板应进行更新,以避免用户在导入时遇到此错误。
-
另外这个(除非我哪里弄错了,这也应该被修复):
运行IMPORT=1 bundle install返回:
[!] 解析 `Gemfile` 时出错:您不能为同一个 gem 指定不同的版本要求。
您指定了:sqlite3 (~> 1.3, >= 1.3.13) 和 sqlite3 (>= 0)。Bundler 无法继续。
# 来自 /home/root/discourse/Gemfile:249
# -------------------------------------------
# group :generic_import, optional: true do
> gem "sqlite3"
# gem "redcarpet"
# -------------------------------------------
确实,sqlite3 已经在上面的几行中指定了:
# 注意:在导入模式下,sqlite 的版本可能非常重要,因此我们将其固定为特定版本
gem "sqlite3", "~> 1.3", ">= 1.3.13"
gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
gem "reverse_markdown"
gem "tiny_tds"
gem "csv"
end
group :generic_import, optional: true do
gem "sqlite3"
gem "redcarpet"
end
我导入时使用的是开发环境安装,如果这很重要的话。
这些信息应该在说明中提及,或者应更新模板。这花费了我几个小时……
需要说明什么?
删除此行使得容器的成功构建成为可能。
所以你删除了这一行?
是的,这就是解决方案。
“您好,我已成功将我的 phpBB 论坛迁移到 Discourse,一切顺利,论坛运行良好。现在我意识到在 FTP 下载 phpBB 数据时没有启用二进制模式,这意味着所有图像都已损坏。我再次运行了脚本,但图像没有被覆盖。我需要修改哪个脚本(最好附带路径),以便覆盖损坏的图像和附件?”
在第二次尝试中,Discourse 会跳过上传,因为它们已存在于 uploads 表中。Discourse 会避免覆盖现有上传,除非明确指示。
你可以在 attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) 中调用 @uploader.create_upload 之前添加下面的代码片段,这将确保任何具有相同文件名的现有上传 首先被删除,强制 Discourse 重新上传它。
existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
existing_upload.destroy
puts "Deleted existing upload: #{filename}"
end
upload = @uploader.create_upload(user_id, path, filename)
“感谢您的回复。遗憾的是,更改没有任何效果。脚本在一分钟内运行完成,但附件未被覆盖……”
您可能需要擦除数据库并重新运行它。
我该怎么做?
步骤 1: 通过 SSH 连接到服务器:
ssh username@server-address
步骤 2: 访问应用程序容器:
./launcher enter import
提示:运行 docker ps 以查找容器名称。默认情况下,它通常命名为 app。
步骤 3: 重置数据库:
RAILS_ENV=production rake db:reset
嘿 Canapin,
我已更新指南中的这部分。
这取决于具体情况。在为本地主机设置容器时,它仍然被注释掉了。该指南假设导入使用单独的容器,该容器无法通过互联网访问,因此在这种情况下无需获取证书。
此 PR 已合并到核心。
我们正在努力解决此问题,但我已更新指南并添加了 FAQ,说明如何解决此问题。
当 Discourse 在子目录中运行时,例如 domain.org/forum,永久链接将不适用,因为它们是 viewtopic.php?p=XXXX 这样的形式,但需要是 forum/viewtopic.php?p=XXXX 才能工作。
已经过去很多年了,但我偶然发现了我们配置中从未生效过的永久链接。是否有图形用户界面/命令行方法可以将 URL 路径元素添加到所有永久链接的前面,或者有人可以添加一个 PostgreSQL 查询来执行此操作?如果将此信息添加到首个帖子中,也可能对其他人有所帮助。