我们建议您测试该流程,因为这并非我们支持的功能,但很可能您只需执行升级操作即可顺利解决。
我刚刚完成了 PostgreSQL 18 的升级,无论是标准安装还是 双容器配置,整个过程都非常顺利,没有任何问题。再次感谢 @chrisr 和团队提供的简便教程。
对于位于 Cloudflare CDN 之后、并使用 R2 上传/备份存储桶的双容器配置,我使用的步骤如下:
步骤 1:磁盘清理
# 删除所有未使用的 Docker 数据
docker system prune -a -f
# 清除旧日志和 apt 缓存
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# 检查数据库大小
du -sh /var/discourse/shared/data/postgres_data*
# 检查新的可用空闲空间
df -h -x tmpfs -x devtmpfs
步骤 2:维护与备份
- 编辑 Cloudflare 维护页面,显示“系统维护更新,预计需要 15-20 分钟”(实际可能不需要这么久,但为了安全起见最好预留时间),并设置约 30 秒的重新加载计时器。开启 Cloudflare Worker 路由以显示维护页面。
- 通过命令行触发备份:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- 登录 Cloudflare R2 控制台,检查备份文件夹以确认备份文件已成功上传
步骤 3:安全关闭
- 首先停止 Web 容器以终止所有活动连接,然后停止数据库容器:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- 验证 PostgreSQL 是否正常关闭:
tail -n 20 shared/data/log/var-log/postgres/current
步骤 4:升级重建
按以下顺序执行命令:
./launcher rebuild data # 转储、迁移并恢复 PostgreSQL 18
./launcher rebuild data # 重建数据库容器
./launcher rebuild web_only # 重建 Web 应用
步骤 5:优化与清理
- 生成缺失的 pg18 表统计信息,否则论坛速度会比平时慢:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- 测试论坛以确保一切正常运行 - 如果你设置了重新加载计时器,此时维护页面应该不再加载了。
- 移除指向维护页面的 Cloudflare Worker 路由(我们不想触及每日 100,000 次的限制!)
- 删除旧的 pg18 数据以回收磁盘空间:
rm -fr /var/discourse/shared/data/postgres_data_old/
完成!
![]()
对于第 1 点,你需要在容器内挂载额外的空间供升级过程使用,但我认为你仍然需要绕过空间检查?
我觉得这可能是一个“先有鸡还是先有蛋”的问题。
如果你的暂存站点使用的是不同的数据库,那么它并没有真正检查所有内容?如果你坚持这样做,请备份数据,删除 postgres_data,然后使用空数据库重建容器,再恢复备份。
但你真正应该做的是创建新的 pg18 服务器,将暂存站点指向该服务器以验证其正常工作,然后将生产站点迁移到该服务器。
我在更新时收到了以下错误信息:
Stopping PostgreSQL 15 database server:
main.Stopping PostgreSQL 18 database server:
mainError: The cluster is owned by group id 993 which does not exist ... failed!
failed!
解决此问题的窍门是删除旧的升级残留文件,并修正权限:
rm -rf /var/discourse/shared/standalone/postgres_data_new
chown -R 999:999 /var/discourse/shared/standalone/postgres_data
… 然后运行两次 ./launcher rebuild app,如果迁移成功且一切正常,可以可选地运行 ./launcher cleanup。
希望这能帮到你。![]()
我在 Windows 上使用 DevContainers 运行开发环境,有什么办法可以修复这个错误吗?
discourse@ddf88cb78939:/workspace/discourse$ bin/dev
[rails] Starting Pitchfork...
[ember] Starting rolldown dev server...
[rails] Starting CSS change watcher
[rails] URGENT: Failed to initialize site default: ActiveRecord::ConnectionNotEstablished connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails]
[rails] /workspace/discourse/config/initializers/000-pg_connection_patch.rb:35:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.new_client'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:944:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#connect'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:956:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#reconnect'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:670:in 'block (2 levels) inActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:1224:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#attempt_configure_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:669:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:668:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:778:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:766:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:786:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#connect!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:992:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:991:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:128:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote_string'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/quoting.rb:76:in 'ActiveRecord::ConnectionAdapters::Quoting#quote'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:122:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1142:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#quoted_scope'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1119:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#data_source_sql'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:60:in 'ActiveRecord::ConnectionAdapters::SchemaStatements#table_exists?'
[rails] /workspace/discourse/lib/site_settings/db_provider.rb:58:in 'SiteSettings::DbProvider#table_exists?'
[rails] /workspace/discourse/lib/site_settings/db_provider.rb:14:in 'SiteSettings::DbProvider#all'
[rails] /workspace/discourse/lib/site_setting_extension.rb:1286:in 'SiteSettingExtension#fetch_setting_hash_from_provider'
[rails] /workspace/discourse/lib/site_setting_extension.rb:602:in 'block in SiteSettingExtension#refresh!'
[rails] /workspace/discourse/lib/site_setting_extension.rb:598:in 'Thread::Mutex#synchronize'
[rails] /workspace/discourse/lib/site_setting_extension.rb:598:in 'SiteSettingExtension#refresh!'
[rails] /workspace/discourse/config/initializers/005-site_settings.rb:19:in 'block (2 levels) in "<main>'
[rails] /workspace/discourse/lib/freedom_patches/rails_multisite.rb:15:in 'block in RailsMultisite::ConnectionManagement.safe_each_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in 'RailsMultisite::ConnectionManagement::NullInstance#each_connection'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in 'RailsMultisite::ConnectionManagement.each_connection'
[rails] /workspace/discourse/lib/freedom_patches/rails_multisite.rb:9:in 'RailsMultisite::ConnectionManagement.each_active_connection'
[rails] /workspace/discourse/lib/freedom_patches/rails_multisite.rb:14:in 'RailsMultisite::ConnectionManagement.safe_each_connection'
[rails] /workspace/discourse/config/initializers/005-site_settings.rb:18:in 'block in <main>'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'BasicObject#instance_exec'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'block in ActiveSupport::Callbacks::CallTemplate::InstanceExec0#make_lambda'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:178:in 'block in ActiveSupport::Callbacks::Filters::Before#call'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:668:in 'block (2 levels) in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'Kernel#catch'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'block in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:179:in 'ActiveSupport::Callbacks::Filters::Before#call'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'block in ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'Array#each'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:108:in 'ActiveSupport::Callbacks#run_callbacks'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/reloader.rb:96:in 'ActiveSupport::Reloader.prepare!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application/finisher.rb:73:in 'block in <module:Finisher>'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'BasicObject#instance_exec'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'Rails::Initializable::Initializer#run'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:61:in 'block in Rails::Initializable#run_initializers'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:231:in 'block in TSort.tsort_each'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:353:in 'block (2 levels) in TSort.each_strongly_connected_component'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:434:in 'TSort.each_strongly_connected_component_from'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:352:in 'block in TSort.each_strongly_connected_component'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Rails::Initializable::Collection#each'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Method#call'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'TSort.each_strongly_connected_component'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:229:in 'TSort.tsort_each'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:208:in 'TSort#tsort_each'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:60:in 'Rails::Initializable#run_initializers'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application.rb:444:in 'Rails::Application#initialize!'
[rails] /workspace/discourse/config/environment.rb:7:in '<top (required)>'
[rails] /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'Kernel.require'
[rails] /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in Kernel#replace_require'
[rails] config.ru:8:in 'block in <main>'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'BasicObject#instance_eval'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'Rack::Builder#initialize'
[rails] config.ru:3:in 'Class#new'
[rails] config.ru:3:in '<main>'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'Kernel#eval'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'block in Pitchfork.builder'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:1160:in 'Pitchfork::HttpServer#build_app!'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:694:in 'block in Pitchfork::HttpServer#spawn_initial_mold'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:170:in 'block in Pitchfork.clean_fork'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Kernel#catch'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Pitchfork.clean_fork'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in 'Pitchfork::HttpServer#spawn_initial_mold'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in 'Pitchfork::HttpServer#start'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>'
[rails] /workspace/discourse/bin/pitchfork:58:in 'Kernel#load'
[rails] /workspace/discourse/bin/pitchfork:58:in 'block in <main>'
[rails] /workspace/discourse/bin/pitchfork:58:in 'Kernel#fork'
[rails] /workspace/discourse/bin/pitchfork:58:in '<main>'
[rails] /workspace/discourse/config/initializers/000-pg_connection_patch.rb:35:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.new_client': connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory (ActiveRecord::ConnectionNotEstablished)
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails]
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:944:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#connect'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:956:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#reconnect'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:670:in 'block (2 levels) in ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:1224:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#attempt_configure_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:669:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:668:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:778:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:766:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:786:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#connect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:992:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:991:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:128:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote_string'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/quoting.rb:76:in 'ActiveRecord::ConnectionAdapters::Quoting#quote'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:122:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1142:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#quoted_scope'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1119:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#data_source_sql'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:45:in 'ActiveRecord::ConnectionAdapters::SchemaStatements#data_source_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/schema_migration.rb:102:in 'block in ActiveRecord::SchemaMigration#table_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/schema_migration.rb:101:in 'ActiveRecord::SchemaMigration#table_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1282:in 'ActiveRecord::MigrationContext#get_all_versions'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1299:in 'ActiveRecord::MigrationContext#pending_migration_versions'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1295:in 'ActiveRecord::MigrationContext#needs_migration?'
[rails] from /workspace/discourse/config/initializers/100-flags.rb:6:in 'block in <main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'BasicObject#instance_exec'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'block in ActiveSupport::Callbacks::CallTemplate::InstanceExec0#make_lambda'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:178:in 'block in ActiveSupport::Callbacks::Filters::Before#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:668:in 'block (2 levels) in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'Kernel#catch'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'block in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:179:in 'ActiveSupport::Callbacks::Filters::Before#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'block in ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'Array#each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:108:in 'ActiveSupport::Callbacks#run_callbacks'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/reloader.rb:96:in 'ActiveSupport::Reloader.prepare!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application/finisher.rb:73:in 'block in <module:Finisher>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'BasicObject#instance_exec'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'Rails::Initializable::Initializer#run'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:61:in 'block in Rails::Initializable#run_initializers'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:231:in 'block in TSort.tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:353:in 'block (2 levels) in TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:434:in 'TSort.each_strongly_connected_component_from'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:352:in 'block in TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Rails::Initializable::Collection#each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Method#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:229:in 'TSort.tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:208:in 'TSort#tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:60:in 'Rails::Initializable#run_initializers'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application.rb:444:in 'Rails::Application#initialize!'
[rails] from /workspace/discourse/config/environment.rb:7:in '<top (required)>'
[rails] from /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'Kernel.require'
[rails] from /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in Kernel#replace_require'
[rails] from config.ru:8:in 'block in <main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'BasicObject#instance_eval'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'Rack::Builder#initialize'
[rails] from config.ru:3:in 'Class#new'
[rails] from config.ru:3:in '<main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'Kernel#eval'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'block in Pitchfork.builder'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:1160:in 'Pitchfork::HttpServer#build_app!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:694:in 'block in Pitchfork::HttpServer#spawn_initial_mold'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:170:in 'block in Pitchfork.clean_fork'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Kernel#catch'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Pitchfork.clean_fork'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in 'Pitchfork::HttpServer#spawn_initial_mold'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in 'Pitchfork::HttpServer#start'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#load'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'block in <main>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#fork'
[rails] from /workspace/discourse/bin/pitchfork:58:in '<main>'
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pg-1.6.3-x86_64-linux/lib/pg/connection.rb:944:in 'PG::Connection.connect_start': connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory (PG::ConnectionBad)
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails] connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
[rails] Is the server running locally and accepting connections on that socket?
[rails]
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pg-1.6.3-x86_64-linux/lib/pg/connection.rb:944:in 'PG::Connection.connect_to_hosts'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pg-1.6.3-x86_64-linux/lib/pg/connection.rb:871:in 'PG::Connection.new'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pg-1.6.3-x86_64-linux/lib/pg.rb:88:in 'PG.connect'
[rails] from /workspace/discourse/config/initializers/000-pg_connection_patch.rb:5:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.new_client'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:944:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#connect'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:956:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#reconnect'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:670:in 'block (2 levels) in ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:1224:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#attempt_configure_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:669:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:668:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#reconnect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:778:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:766:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#verify!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:786:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#connect!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:992:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:991:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:128:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote_string'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/quoting.rb:76:in 'ActiveRecord::ConnectionAdapters::Quoting#quote'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/quoting.rb:122:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting#quote'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1142:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#quoted_scope'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:1119:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#data_source_sql'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:45:in 'ActiveRecord::ConnectionAdapters::SchemaStatements#data_source_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/schema_migration.rb:102:in 'block in ActiveRecord::SchemaMigration#table_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/schema_migration.rb:101:in 'ActiveRecord::SchemaMigration#table_exists?'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1282:in 'ActiveRecord::MigrationContext#get_all_versions'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1299:in 'ActiveRecord::MigrationContext#pending_migration_versions'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activerecord-8.0.5.1/lib/active_record/migration.rb:1295:in 'ActiveRecord::MigrationContext#needs_migration?'
[rails] from /workspace/discourse/config/initializers/100-flags.rb:6:in 'block in <main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'BasicObject#instance_exec'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:406:in 'block in ActiveSupport::Callbacks::CallTemplate::InstanceExec0#make_lambda'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:178:in 'block in ActiveSupport::Callbacks::Filters::Before#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:668:in 'block (2 levels) in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'Kernel#catch'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:667:in 'block in ActiveSupport::Callbacks::CallbackChain#default_terminator'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:179:in 'ActiveSupport::Callbacks::Filters::Before#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'block in ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'Array#each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:559:in 'ActiveSupport::Callbacks::CallbackSequence#invoke_before'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/callbacks.rb:108:in 'ActiveSupport::Callbacks#run_callbacks'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/reloader.rb:96:in 'ActiveSupport::Reloader.prepare!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application/finisher.rb:73:in 'block in <module:Finisher>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'BasicObject#instance_exec'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:32:in 'Rails::Initializable::Initializer#run'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:61:in 'block in Rails::Initializable#run_initializers'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:231:in 'block in TSort.tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:353:in 'block (2 levels) in TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:434:in 'TSort.each_strongly_connected_component_from'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:352:in 'block in TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Rails::Initializable::Collection#each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Method#call'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'TSort.each_strongly_connected_component'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:229:in 'TSort.tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:208:in 'TSort#tsort_each'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/initializable.rb:60:in 'Rails::Initializable#run_initializers'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/railties-8.0.5.1/lib/rails/application.rb:444:in 'Rails::Application#initialize!'
[rails] from /workspace/discourse/config/environment.rb:7:in '<top (required)>'
[rails] from /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'Kernel.require'
[rails] from /usr/local/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in Kernel#replace_require'
[rails] from config.ru:8:in 'block in <main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'BasicObject#instance_eval'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/rack-2.2.23/lib/rack/builder.rb:125:in 'Rack::Builder#initialize'
[rails] from config.ru:3:in 'Class#new'
[rails] from config.ru:3:in '<main>'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'Kernel#eval'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:91:in 'block in Pitchfork.builder'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:1160:in 'Pitchfork::HttpServer#build_app!'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:694:in 'block in Pitchfork::HttpServer#spawn_initial_mold'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:170:in 'block in Pitchfork.clean_fork'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Kernel#catch'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Pitchfork.clean_fork'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in 'Pitchfork::HttpServer#spawn_initial_mold'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in 'Pitchfork::HttpServer#start'
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#load'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'block in <main>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#fork'
[rails] from /workspace/discourse/bin/pitchfork:58:in '<main>'
[rails] mold gen=0 pid=6050 reaped (#<Process::Status: pid 6050 exit 1>)
[rails] /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:179:in 'Pitchfork::HttpServer#start': The initial mold failed to boot (Pitchfork::BootFailure)
[rails] from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#load'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'block in <main>'
[rails] from /workspace/discourse/bin/pitchfork:58:in 'Kernel#fork'
[rails] from /workspace/discourse/bin/pitchfork:58:in '<main>'
[rails] /workspace/discourse/bin/pitchfork exited with code 0
--> Sending SIGTERM to other processes..
[ember] ./rolldown.mjs exited with code SIGTERM
discourse@ddf88cb78939:/workspace/discourse$
也许是猜测,但 Discourse 是否将它们混淆了?
discourse@ddf88cb78939:/workspace/discourse$ sudo cat /shared/postgres_data/PG_VERSION
sudo cat /shared/postgres_data_orig/PG_VERSION
15
18
编辑:在 ChatGPT 的帮助下已修复。我不是 Linux/Postgres 专家。
我遇到了一个问题,PostgreSQL 18 缺失或者没有迁移我的 secondsite 数据库。如有任何帮助,将不胜感激。
我有一个针对损坏的多站点升级的修复方案正在等待中,准备好后我会通知你。
我刚刚合并了一个针对多站点的修复,所有数据库现在应该都能正常升级。您可以按照以下步骤将数据库恢复到升级前的状态,然后重试:
- 确认旧数据仍存在于
/shared/postgres_data_old。 - 删除
/shared/postgres_data中升级失败的数据(如果磁盘空间充足,建议先重命名而不是直接删除)。 - 将
/shared/postgres_data_old重命名回/shared/postgres_data。您还需要确保目录权限为 0700,否则 Postgres 将拒绝使用它。 - 运行
./launcher rebuild app重新启动升级。
我认为他们几个小时前已经解决了这个问题
非常感谢。
我在重建日志中注意到了这一点:
116:C 11 Aug 2026 06:43:27.336 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see vm.max_map_count growing steadily when vm.overcommit_memory is 2 · Issue #1328 · jemalloc/jemalloc · GitHub. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
这是否需要担心?
我还注意到,我的新数据库大小明显小于旧数据库:
root@Forum:/var/discourse/shared/standalone# du -sh postgres_data postures_data_old
6.8G postgres_data
10G postgres_data_old
17G total
这是否令人担忧?
这目录名有点奇怪?
作为对比,我的结果如下:
:/var/discourse/shared/data# du -sh postgres_data postgres_data_old
4.1G postgres_data
3.4G postgres_data_old
嗯,我想是类型修正把这个名字弄乱了。应该是 postgres_data。
所以你的新数据变大了。这有点令人担心。
按照说明运行了更新,一切都非常顺利。第一次重建后,控制台显示来自 15 的更新成功,并显示了旧数据库的位置以及再次运行重建的说明。
感谢 Lilly 的提示
得以确认磁盘空间充足
编辑:补充
感谢所有为此出色工作付出努力的人 ![]()
我可能会加上通配符,以防升级后残留的文件:
# 检查数据库大小
du -sh /var/discourse/shared/data/postgres_data*
呜呜呜呜
… ![]()
正如你所猜到的,我没收到这份备忘录……哎呀!![]()
我对这次数据库升级和空间需求一无所知,起初 PostgreSQL 报错提示空间不足 12GB,应用无法重启。我清理了磁盘,设法释放了大约 6GB 空间,再次运行,但仍然没有成功。
我没有继续折腾,而是直接回滚到备份恢复。
你随时可以效仿 @pfaffman,迁移到一台全新的服务器,从头开始安装 PG 18 和最新的 Ubuntu LTS 系统……
谢谢。我将执行一次测试迁移,以确认:
同时我会密切关注此话题。
