今天正在升级到 Discourse 的当前版本,重建失败,我不确定是什么原因造成的。安装已经落后了好几个版本(我认为是 2.8x)。当我尝试升级 Discourse 时,Docker 镜像更新进展顺利,被要求手动拉取并重建(大多数时候我都会收到这个提示),但是重建不成功。
这是使用 discourse-doctor 搜索“error”的结果。抱歉使用截图,我使用的基于 Web 的 VNC 客户端似乎不支持复制粘贴。
![]()
今天正在升级到 Discourse 的当前版本,重建失败,我不确定是什么原因造成的。安装已经落后了好几个版本(我认为是 2.8x)。当我尝试升级 Discourse 时,Docker 镜像更新进展顺利,被要求手动拉取并重建(大多数时候我都会收到这个提示),但是重建不成功。
这是使用 discourse-doctor 搜索“error”的结果。抱歉使用截图,我使用的基于 Web 的 VNC 客户端似乎不支持复制粘贴。
![]()
它似乎认为您有两个名为 racerx 的用户。我认为这里有一个关于类似问题的帖子:
这里还有一个最近的帖子:
谢谢,我将开始沿着这条路走下去……祝我好运……
我不知道如何开始重新索引。我已经能够启动(虽然它无法通过网络访问)并进入应用程序,但无法继续前进。

您需要在容器内运行这些命令。类似这样:
./launcher start app
./launcher enter app
在您 sudo postgres 之前。
编辑:哦,您已经进入容器了。
那个 postgres -c 需要在其前面加上 sudo。
我猜 sudo 不会起作用,但 su 可以,现在我在浏览 postgres。
所以现在我需要弄清楚如何实际修复重复项。查询似乎是…
UPDATE users SET username_lower = 'xxx' WHERE id = xxx;
我尝试了几种变体但都没有成功。正如你所看到的,我并不完全确定正确的语法是什么,因为错误与列有关。
我会继续挖掘。我还不知道有多少重复项…
/编辑… 只是 racerx。该死的 RACERX!

你弄清楚怎么修复它了吗?
我也会返回用户的 ID(它是唯一的),以便正确识别他们,然后重命名这两个用户中的一个 ![]()
正如 @Canapin 所说,如果你还没有弄清楚,既然你已经确定 racerx 是唯一重复的用户名,那么让用户名唯一应该是很简单的。
首先,如果你还没有这样做,请确保 racerx2 尚不存在,这样你就不会只是把问题转移到另一个用户名上:(如果你得到一个 id,请尝试另一个用户名。)
SELECT id FROM users WHERE username_lower = 'racerx2';
一旦你有一个未使用的用户名,就获取重复的 racerx 账户的 ID:
SELECT id from users WHERE username_lower = 'racerx';
选择其中一个,哪个都可以,但我建议选择最大的那个,然后更改其用户名:(如果需要,请将 racerx2 替换为不同的用户名,并将 12345 替换为你选择的 racerx 的 ID。)
UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
更新(草稿中放了几日,抱歉)看起来我搞定了。不确定我所做的是否是正确的方法,但它已成功重建。
发现很难使用该语法修改/追加 username_lower 列中的 racerx 值,所以我采取了另一种方法。通过查找行的 ID,并在特定行中修改 username_lower 值。
首先,我尝试获取 users 表中 username_lower 列包含“racerx”的行的报告。
select all from users where username_lower ='racerx';
基于此,我决定将 racerx 修改为 racerx2,我不记得具体输入了什么来实现这一点。我认为是 UPDATE SET from users username_lower racerx to racerx2
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.