您好,
我目前正在从传统的两个容器设置(分离的 web_only 和 data 容器)迁移到一个数据库托管在中央数据库服务器(不在 Docker 容器内)的设置。
中央数据库是从 dump.sql 创建的,该文件是备份文件的一部分。docker compose web_only.yaml 使用:
## 连接到中央 PostgreSQL 数据库
DISCOURSE_DB_SOCKET: ''
DISCOURSE_DB_USERNAME: discourse
DIS="../../home/discourse/discourse/config/database.yml"
DISCOURSE_DB_HOST: 10.10.10.xx
DISCOURSE_DB_NAME: discourse
在构建 web_only 时,我收到以下错误:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 741 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
使用这些数据可以访问数据库主机。有什么想法知道发生了什么吗?使用标准的数据库容器进行相同的构建可以成功完成。
pfaffman
(Jay Pfaffman)
2023 年11 月 8 日 05:32
2
您确定服务器可以访问远程数据库吗?看起来不行。您能从 Web 服务器机器 telnet 到数据库端口吗?
嗨 Jay,
我按照 Falco 在 Configure Discourse to use a separate PostgreSQL server 的帖子进行了操作。数据库服务器可以从 VM 访问:
root@docker2:/var/discourse# pg_isready -d discourse -h 10.10.10.18 -p 5432 -U discourse
10.10.10.18:5432 - Verbindungen werden angenommen
(连接已接受)
web_only.yml 中的数据库名称、用户和密码也是正确的。构建错误是:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process:
:Status: pid 829 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migra
te'"]}
bootstrap failed with exit code 1
我不是 Ruby 专家,所以需要一些帮助来从这里出现的错误开始调试。
再见,Thommie
PostgreSQL 13.12
无 AI 插件
插件:
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-shared-edits.git
- git clone https://github.com/discourse/discourse-chat-integration
- git clone https://github.com/discourse/wp-discourse
- git clone https://github.com/discourse/discourse-openid-connect
- git clone https://github.com/discourse/discourse-calendar
- git clone https://github.com/discourse/discourse-data-explorer
- git clone https://github.com/paviliondev/discourse-events
- git clone https://github.com/paviliondev/discourse-locations
- git clone https://github.com/discourse/discourse-reactions
- git clone https://github.com/discourse/discourse-chat
- git clone https://github.com/discourse/discourse-voting.git
- git clone https://github.com/discourse/discourse-user-notes.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-footnote.git
- git clone https://github.com/discourse/discourse-docs.git
- git clone https://github.com/discourse/discourse-docs-card-filter.git
- git clone https://github.com/discourse/discourse-assign.git
- git clone https://github.com/discourse/discourse-templates.git
- git clone https://github.com/discourse/discourse-saved-searches.git
- git clone https://github.com/discourse/discourse-tooltips
- git clone https://github.com/nathan-nz/discourse-wikified-posts
- git clone https://github.com/discourse/discourse-post-voting.git
- git clone https://github.com/discourse/discourse-encrypt.git
- git clone https://github.com/discourse/discourse-zoom.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/discourse/discourse-category-experts.git
Falco
(Falco)
2023 年11 月 10 日 18:56
6
\n\n可以\n[quote=“Thommie Rother, post:1, topic:284615, username:Thomas_Rother”]\n请向上滚动并查找更早的错误消息,可能不止一条。\n[/quote]\n\n吗?\n\n确切的错误消息将告诉我们问题所在 \n\n[quote=“Thommie Rother, post:1, topic:284615, username:Thomas_Rother”]\n我目前正在从传统的两个容器设置(分离的 web_only 和 data 容器)迁移到一个数据库托管在中央数据库服务器上(不在 docker 容器内)的设置。\n[/quote]\n\n您的计划是放弃数据容器吗?
1 个赞
错误代码:
> FAILED
> --------------------
> Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' 失败,返回 #<Process::Status: pid 816 exit 1>
> 失败位置:/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
> exec 失败,参数为 {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
> bootstrap 失败,退出代码为 1
在新系统上,数据应尽可能来自中央数据库,而不是 Docker 数据库。
Thommie Rother:
DISCOURSE_DB_SOCKET: ‘’
我想知道将其设置为空值而不是未设置是否会导致问题。
无论如何,请发布完整的输出。
1 个赞
./launcher rebuild web_only 的完整构建日志
web_only_build.zip (9.4 KB)
yaml 文件
web_only.zip (2.4 KB)
关于 DISCOURSE_DB_SOCKET:“”:由于我们使用远程连接,我猜套接字值在两种情况(dockerized 数据或远程数据)下都不相关
1 个赞
错误出现在更靠前的构建日志中:
…
docker_manager 已是最新兼容版本
wp-discourse 已是最新兼容版本
I, [2023-11-10T21:08:17.388213 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
插件名称为 'discourse-topic-voting',但插件目录名为 'discourse-voting'
rake 中止!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: permission denied for table users (ActiveRecord::StatementInvalid)
所以好消息是!它连接正常,只是数据库权限需要调整。
2 个赞
嗯,奇怪,discourse 数据库用户在中央 postgres 服务器上拥有
postgres=# GRANT ALL ON DATABASE discourse TO discourse;
我们还需要此角色做其他事情吗?
这不会影响现有表。
粗略地说,也许:
ALTER DATABASE "discourse" OWNER TO "discourse";
或者:
ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT ALL ON TABLES TO "discourse";
Postgres 日志也应该更详细地告诉您哪些操作失败了。
4 个赞
… 好的好的,看起来我在这里还有一些权限问题,请看 /var/log/postgresql/postgresql-13-main.log:
2023-11-10 22:07:58.371 UTC [196127] postgres@postgres STATEMENT: ALTER DEFAULT PRIVILEGES IN SCHEMA 'public' GRANT ALL ON TABLES TO 'discourse';
2023-11-10 22:10:18.270 UTC [196160] discourse@discourse ERROR: permission denied for table site_settings
2023-11-10 22:10:18.270 UTC [196160] discourse@discourse STATEMENT: SELECT name, data_type, value FROM site_settings
2023-11-10 22:10:18.313 UTC [196160] discourse@discourse ERROR: permission denied for table users
2023-11-10 22:10:18.313 UTC [196160] discourse@discourse STATEMENT: SELECT COUNT(*) FROM (SELECT 1 AS one FROM "users" LIMIT 20) subquery_for_count
好的,一如既往,这是一个“第 8 层问题”
我已经在 postgres 中创建了一个 discourse 数据库,但 discourse 用户/角色在该数据库上没有所有必需的权限。而且我确实错过了一些 mariadb 和 postgres 之间主要的“行为”差异……
现在我重新创建了所有内容:用户、数据库、用户/角色的权限(包括 ALTER DEFAULT PRIVILEGES FOR ROLE discourse IN SCHEMA public GRANT ALL ON TABLES TO “discourse”; 以匹配该用户将来创建的表)
构建已完成,实例可以正常运行,使用远程 postgres 服务器,因此可以导入旧实例的备份。
4 个赞
system
(system)
关闭
2023 年12 月 11 日 09:00
15
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.