你能提供更多细节吗?我也遇到了同样的问题
对于遇到相同问题的人,以下是我所做操作的摘要(由 AI 生成):
临时启动 PG15 → 导出数据库 → 使用 PG18 → 恢复导出的数据
所以,是的,这次升级是基于镜像的。
那么,即使你选择安装旧版本的 Discourse,镜像仍然会强制进行 18 版本的升级吗?
明白了。
我看到你已经修复了,但 ChatGPT 提供的方法虽然解决了错误,却清除了我的数据库,导致实际上没有账户、主题或帖子。
幸运的是,这是一个较新的开发论坛,所以损失不大。
我们非常谨慎,以确保今天不会发生这种情况。在每一步之后,系统都会告诉我这不会删除任何内容,而且我有种印象,我们在同意删除不再需要的内容之前,已经三次确认所有数据都已迁移。
但如果真的出了问题,我唯一会丢失的数据就是主题组件配置。
你好,我有一个数据库相当大的论坛(大约80 GB)。从13版升级到15版时,我更换了服务器,进行了新安装并恢复了数据。
你们也建议采用同样的升级方式吗?(我尝试过直接升级,但遇到了排序规则错误)
该主题前面有工作人员表示:
所以,是的,这是一个可行的选项。
你之前已经说过:
我尝试了直接升级,但遇到了排序规则错误
排序规则错误?现有的 Discourse 是什么版本?
也许可以发布你遇到的错误/控制台输出
一个相当大的数据库(约 80 GB)
但你没有空间不足(建议为现有数据库大小的 2 倍)?
你好,我有空间(250 GB 可用),错误是“排序规则不匹配”,但我猜我的 app.yml 文件中没有 UTF-8 字符串。
那么,即使我选择安装旧版本的 Discourse,镜像仍然会强制升级到 18 吗?
我们尽量在 discourse_docker 镜像中提供合理的默认设置,但不可能涵盖所有可能的使用场景。如果您愿意,可以随意自定义镜像以保留旧版本。
在某种程度上,依赖项的版本反映了我们的托管需求——我们在内部使用基础镜像。这意味着它不会过于陈旧,但也意味着我们只能维护有限数量的组合。
你好,我有一个相当大的数据库(约 80 GB)。在从版本 13 升级到 15 时,我更换了服务器,进行了全新安装,并恢复了数据。
你们仍然推荐这种方法吗?(我尝试过直接升级,但遇到了排序规则错误)
如果您更习惯这种方式,这完全是一种有效的方法。
错误是“排序规则不匹配”,
如果在准备转储旧数据库时生成此警告,则无需担心。我们仅为了运行 pg_dump 而针对旧数据目录启动服务器。当转储恢复到新服务器时,索引会重新创建。
您看到此警告的原因是,在过去几天里,我们发布了一个新版本的基础镜像,将 Debian 从 Bookworm 升级到 Trixie,从而更改了 glibc 版本。基于 libc 提供程序(您可能正在使用)的区域设置在 glibc 升级过程中并不稳定,因此当升级脚本启动 Postgres 服务器以转储您的旧数据时,会显示排序规则不匹配警告。
排序规则不匹配正是我们选择进行转储和恢复而不是运行 pg_upgrade 的全部原因。一旦您的数据库使用带有 builtin 提供程序的 C.UTF-8,glibc 的升级将不再影响排序规则。
如果警告是在准备转储旧数据库时生成的,那就不必担心。
我今晚进行了升级,一切按计划进行。我收到了相同的数据库排序规则警告,但听起来我们应该忽略它们。谢谢。
我尝试在 app.yml 中配置以下内容:
app.yml
templates:
- “templates/postgres.15.template.yml”
- “templates/redis.template.yml”
- “templates/web.template.yml”
- “templates/web.ratelimited.template.yml”
以推迟升级,但我遇到了以下错误:
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/replace_command.rb:11:in ‘IO.read’
replace failed with the params {“filename” => “/etc/postgresql/15/main/postgresql.conf”, “from” => “data_directory = ‘/var/lib/postgresql/15/main’”, “to” => “data_directory = ‘/shared/postgres_data’”}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
我觉得可能是基础容器用错了。你运行过 ./launcher rebuild 吗?这个命令应该会执行 git pull,但你可以试试手动运行 git pull,看看情况会不会有变化。