论坛宕机,重建时出现 db:migrate 错误

你好。我们的论坛 (https://forum.pardus.org.tr) 宕机了,当我进入控制台并尝试重建时,出现了以下错误:

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 606 exit 1>

日志中出现的另一个错误是:

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

ERROR:  unsupported Unicode escape sequence
DETAIL:  \u0000 cannot be converted to text.

以下是日志内容。我禁用了所有插件,升级了系统并重启,但均无效。
重建失败后,应用无法启动,但当我运行 ./launcher start app 时,它确实启动了。随后,网站显示一个空白屏幕,后台加载了一些自定义 CSS:

系统为 Ubuntu 16.04.7 LTS,我们使用的是 Discourse 的 Docker 版本。

您有什么建议吗?

完整日志:

root@pardus:/var/discourse# git pull
Already up-to-date.
root@pardus:/var/discourse# ./launcher rebuild app
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && git checkout v1.0.3 && /pups/bin/pups --stdin
From https://github.com/discourse/pups
   17f04ec..ebe1069  master       -> origin/master
 + 4db217f...af226b0 gen-env-args -> origin/gen-env-args  (forced update)
Updating 17f04ec..ebe1069
Fast-forward
 .github/workflows/ci.yml     |  29 ++++++
 .github/workflows/lint.yml   |  27 ++++++
 .rubocop.yml                 |   3 +
 Gemfile                      |   2 +
 Guardfile                    |   4 +-
 README.md                    |  12 +++
 Rakefile                     |  14 +--
 bin/pups                     |   8 +-
 lib/pups.rb                  |  32 ++++---
 lib/pups/cli.rb              |  86 +++++++++--------
 lib/pups/command.rb          |  25 ++---
 lib/pups/config.rb           | 222 +++++++++++++++++++++----------------------
 lib/pups/exec_command.rb     | 182 ++++++++++++++++++-----------------
 lib/pups/file_command.rb     |  60 ++++++------
 lib/pups/merge_command.rb    |  94 +++++++++---------
 lib/pups/replace_command.rb  |  70 +++++++-------
 lib/pups/runit.rb            |  47 +++++----
 lib/pups/version.rb          |   4 +-
 pups.gemspec                 |  37 ++++----
 test/cli_test.rb             |  44 ++++++---
 test/config_test.rb          | 165 ++++++++++++++++++++------------
 test/exec_command_test.rb    |  62 ++++++------
 test/file_command_test.rb    |  17 ++--
 test/merge_command_test.rb   |  64 ++++++-------
 test/replace_command_test.rb |  86 ++++++++---------
 test/test_helper.rb          |   2 +
 26 files changed, 780 insertions(+), 618 deletions(-)
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 .github/workflows/lint.yml
 create mode 100644 .rubocop.yml
Note: checking out 'v1.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now atd1db030 发布了一个新版本
I, [2021-06-14T20:43:19.976735 #1]  INFO -- : 正在加载 --stdin
I, [2021-06-14T20:43:19.983799 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2021-06-14T20:43:20.100506 #1]  INFO -- : 正在生成语言环境(这可能需要一段时间)...
生成完成。

I, [2021-06-14T20:43:20.101476 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2021-06-14T20:43:20.120154 #1]  INFO -- : 
I, [2021-06-14T20:43:20.122575 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2021-06-14T20:43:20.129408 #1]  INFO -- : 
I, [2021-06-14T20:43:20.130175 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2021-06-14T20:43:20.135192 #1]  INFO -- : 
I, [2021-06-14T20:43:20.135721 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2021-06-14T20:43:20.140161 #1]  INFO -- : 
I, [2021-06-14T20:43:20.140743 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2021-06-14T20:43:20.146673 #1]  INFO -- : 
I, [2021-06-14T20:43:20.147212 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2021/06/14 20:43:20 socat[32] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): 没有那个文件或目录
I, [2021-06-14T20:43:20.173287 #1]  INFO -- : 
I, [2021-06-14T20:43:20.173784 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2021-06-14T20:43:20.179456 #1]  INFO -- : 
I, [2021-06-14T20:43:20.179915 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2021-06-14T20:43:20.184575 #1]  INFO -- : 
I, [2021-06-14T20:43:20.185051 #1]  INFO -- : > mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
I, [2021-06-14T20:43:20.188867 #1]  INFO -- : 
I, [2021-06-14T20:43:20.189503 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
I, [2021-06-14T20:43:20.192744 #1]  INFO -- : 
I, [2021-06-14T20:43:20.200309 #1]  INFO -- : 文件 > /etc/service/postgres/run  chmod: +x  chown: 
I, [2021-06-14T20:43:20.206820 #1]  INFO -- : 文件 > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2021-06-14T20:43:20.213637 #1]  INFO -- : 文件 > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2021-06-14T20:43:20.220171 #1]  INFO -- : 文件 > /root/upgrade_postgres  chmod: +x  chown: 
I, [2021-06-14T20:43:20.220635 #1]  INFO -- : > chown -R root /var/lib/postgresql/13/main
I, [2021-06-14T20:43:20.876768 #1]  INFO -- : 
I, [2021-06-14T20:43:20.877210 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
I, [2021-06-14T20:43:20.882644 #1]  INFO -- : 
I, [2021-06-14T20:43:20.882848 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2021-06-14T20:43:20.928151 #1]  INFO -- : 
I, [2021-06-14T20:43:20.928800 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2021-06-14T20:43:20.934584 #1]  INFO -- : 
I, [2021-06-14T20:43:20.935465 #1]  INFO -- : > /root/upgrade_postgres
I, [2021-06-14T20:43:20.945676 #1]  INFO -- : 
I, [2021-06-14T20:43:20.946088 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2021-06-14T20:43:20.949097 #1]  INFO -- : 
I, [2021-06-14T20:43:20.950937 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 data_directory = '/var/lib/postgresql/13/main' 替换为 data_directory = '/shared/postgres_data'
I, [2021-06-14T20:43:20.951899 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?listen_addresses *=.*) 替换为 listen_addresses = '*'
I, [2021-06-14T20:43:20.953130 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?synchronous_commit *=.*) 替换为 synchronous_commit = $db_synchronous_commit
I, [2021-06-14T20:43:20.954157 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?shared_buffers *=.*) 替换为 shared_buffers = $db_shared_buffers
I, [2021-06-14T20:43:20.955090 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?work_mem *=.*) 替换为 work_mem = $db_work_mem
I, [2021-06-14T20:43:20.955919 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?default_text_search_config *=.*) 替换为 default_text_search_config = '$db_default_text_search_config'
I, [2021-06-14T20:43:20.957005 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2021-06-14T20:43:20.966382 #1]  INFO -- : 
I, [2021-06-14T20:43:20.967335 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?checkpoint_segments *=.*) 替换为 checkpoint_segments = $db_checkpoint_segments
I, [2021-06-14T20:43:20.968116 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?logging_collector *=.*) 替换为 logging_collector = $db_logging_collector
I, [2021-06-14T20:43:20.969279 #1]  INFO -- : 将 /etc/postgresql/13/main/postgresql.conf 中的 (?-mix:#?log_min_duration_statement *=.*) 替换为 log_min_duration_statement = $db_log_min_duration_statement
I, [2021-06-14T20:43:20.970202 #1]  INFO -- : 将 /etc/postgresql/13/main/pg_hba.conf 中的 (?-mix:^#local +replication +postgres +peer$) 替换为 local replication postgres  peer
I, [2021-06-14T20:43:20.971016 #1]  INFO -- : 将 /etc/postgresql/13/main/pg_hba.conf 中的 (?-mix:^host.*all.*all.*127.*$) 替换为 host all all 0.0.0.0/0 md5
I, [2021-06-14T20:43:20.972338 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-06-14T20:43:20.975654 #1]  INFO -- : > sleep 5
2021-06-14 20:43:21.164 UTC [55] LOG:  正在启动 PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1),运行于 x86_64-pc-linux-gnu,由 gcc (Debian 8.3.0-6) 8.3.0 编译,64位
2021-06-14 20:43:21.165 UTC [55] LOG:  正在监听 IPv4 地址 "0.0.0.0",端口 5432
2021-06-14 20:43:21.165 UTC [55] LOG:  正在监听 IPv6 地址 "::",端口 5432
2021-06-14 20:43:21.172 UTC [55] LOG:  正在监听 Unix 套接字 "/var/run/postgresql/.s.PGSQL.5432"
2021-06-14 20:43:21.187 UTC [58] LOG:  数据库系统于 2021-06-14 20:43:07 UTC 关闭
2021-06-14 20:43:21.214 UTC [55] LOG:  数据库系统已准备好接受连接
I, [2021-06-14T20:43:25.983349 #1]  INFO -- : 
I, [2021-06-14T20:43:25.984446 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2021-06-14 20:43:26.169 UTC [68] postgres@postgres ERROR:  数据库 "discourse" 已存在
2021-06-14 20:43:26.169 UTC [68] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: 错误:数据库创建失败:ERROR:  数据库 "discourse" 已存在
I, [2021-06-14T20:43:26.176701 #1]  INFO -- : 
I, [2021-06-14T20:43:26.177002 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2021-06-14 20:43:26.300 UTC [79] postgres@discourse ERROR:  角色 "discourse" 已存在
2021-06-14 20:43:26.300 UTC [79] postgres@discourse STATEMENT:  create user discourse;
ERROR:  角色 "discourse" 已存在
I, [2021-06-14T20:43:26.303983 #1]  INFO -- : 
I, [2021-06-14T20:43:26.304385 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2021-06-14T20:43:26.398821 #1]  INFO -- : GRANT

I, [2021-06-14T20:43:26.399108 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2021-06-14T20:43:26.483017 #1]  INFO -- : ALTER SCHEMA

I, [2021-06-14T20:43:26.483445 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
NOTICE:  扩展 "hstore" 已存在,跳过
I, [2021-06-14T20:43:26.601361 #1]  INFO -- : CREATE EXTENSION

I, [2021-06-14T20:43:26.601596 #1]  INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
NOTICE:  扩展 "pg_trgm" 已存在,跳过
I, [2021-06-14T20:43:26.681708 #1]  INFO -- : CREATE EXTENSION

I, [2021-06-14T20:43:26.682557 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
NOTICE:  扩展 "hstore" 已存在,跳过
I, [2021-06-14T20:43:26.771819 #1]  INFO -- : CREATE EXTENSION

I, [2021-06-14T20:43:26.772095 #1]  INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
NOTICE:  扩展 "pg_trgm" 已存在,跳过
I, [2021-06-14T20:43:26.859172 #1]  INFO -- : CREATE EXTENSION

I, [2021-06-14T20:43:26.859684 #1]  INFO -- : > sudo -u postgres psql discourse
I, [2021-06-14T20:43:26.864324 #1]  INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');

I, [2021-06-14T20:43:27.012727 #1]  INFO -- : 文件 > /var/lib/postgresql/take-database-backup  chmod: +x  chown: postgres:postgres
I, [2021-06-14T20:43:27.018312 #1]  INFO -- : 文件 > /var/spool/cron/crontabs/postgres  chmod:   chown: 
I, [2021-06-14T20:43:27.018442 #1]  INFO -- : > echo postgres installed!
I, [2021-06-14T20:43:27.021238 #1]  INFO -- : postgres installed!

I, [2021-06-14T20:43:27.028213 #1]  INFO -- : 文件 > /etc/service/redis/run  chmod: +x  chown: 
I, [2021-06-14T20:43:27.034695 #1]  INFO -- : 文件 > /etc/service/redis/log/run  chmod: +x  chown: 
I, [2021-06-14T20:43:27.041086 #1]  INFO -- : 文件 > /etc/runit/3.d/10-redis  chmod: +x  chown: 
I, [2021-06-14T20:43:27.041875 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 daemonize yes 替换为 
I, [2021-06-14T20:43:27.042713 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 (?-mix:^pidfile.*$) 替换为 
I, [2021-06-14T20:43:27.044658 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2021-06-14T20:43:27.048290 #1]  INFO -- : 
I, [2021-06-14T20:43:27.049013 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 (?-mix:^logfile.*$) 替换为 logfile ""
I, [2021-06-14T20:43:27.049645 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 (?-mix:^bind .*$) 替换为 
I, [2021-06-14T20:43:27.051683 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 (?-mix:^dir .*$) 替换为 dir /shared/redis_data
I, [2021-06-14T20:43:27.053735 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 (?-mix:^protected-mode yes) 替换为 protected-mode no
I, [2021-06-14T20:43:27.055899 #1]  INFO -- : 将 /etc/redis/redis.conf 中的 # io-threads 4 替换为 io-threads $redis_io_threads
I, [2021-06-14T20:43:27.058009 #1]  INFO -- : > echo redis installed
I, [2021-06-14T20:43:27.061320 #1]  INFO -- : redis installed

I, [2021-06-14T20:43:27.061883 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2021-06-14T20:43:27.069345 #1]  INFO -- : logfile ""

I, [2021-06-14T20:43:27.070056 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2021-06-14T20:43:27.072228 #1]  INFO -- : > sleep 10
172:C 14 Jun 2021 20:43:27.083 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
172:C 14 Jun 2021 20:43:27.083 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=172, just started
172:C 14 Jun 2021 20:43:27.083 # 配置已加载
172:M 14 Jun 2021 20:43:27.084 * monotonic clock: POSIX clock_gettime
172:M 14 Jun 2021 20:43:27.085 * 运行模式=standalone, port=6379.
172:M 14 Jun 2021 20:43:27.086 # WARNING: 由于 /proc/sys/net/core/somaxconn 设置为较低值 128,无法强制执行 511 的 TCP backlog 设置。
172:M 14 Jun 2021 20:43:27.086 # 服务器已初始化
172:M 14 Jun 2021 20:43:27.086 # WARNING overcommit_memory 设置为 0!在内存不足的情况下,后台保存可能会失败。要解决此问题,请将 'vm.overcommit_memory = 1' 添加到 /etc/sysctl.conf,然后重启或运行命令 'sysctl vm.overcommit_memory=1' 使其生效。
172:M 14 Jun 2021 20:43:27.086 * 正在加载由版本 6.2.1 生成的 RDB
172:M 14 Jun 2021 20:43:27.086 * RDB 年龄 22 秒
172:M 14 Jun 2021 20:43:27.086 * 创建时 RDB 内存使用量 33.91 Mb
172:M 14 Jun 2021 20:43:27.250 * 从磁盘加载数据库:0.164 秒
172:M 14 Jun 2021 20:43:27.250 * 已准备好接受连接
I, [2021-06-14T20:43:37.077667 #1]  INFO -- : 
I, [2021-06-14T20:43:37.078562 #1]  INFO -- : > thpoff echo "thpoff is installed!"
I, [2021-06-14T20:43:37.091668 #1]  INFO -- : thpoff is installed!

I, [2021-06-14T20:43:37.092496 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2021-06-14T20:43:37.231617 #1]  INFO -- : 
I, [2021-06-14T20:43:37.232119 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2021-06-14T20:43:37.332854 #1]  INFO -- : 
I, [2021-06-14T20:43:37.333974 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'
I, [2021-06-14T20:43:37.440820 #1]  INFO -- : 
I, [2021-06-14T20:43:37.441063 #1]  INFO -- : > chown -R discourse /home/discourse
I, [2021-06-14T20:43:37.538075 #1]  INFO -- : 
I, [2021-06-14T20:43:37.538616 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2021-06-14T20:43:37.547281 #1]  INFO -- : 
I, [2021-06-14T20:43:37.552659 #1]  INFO -- : 文件 > /etc/cron.d/anacron  chmod:   chown: 
I, [2021-06-14T20:43:37.559876 #1]  INFO -- : 文件 > /etc/runit/1.d/copy-env  chmod: +x  chown: 
I, [2021-06-14T20:43:37.566833 #1]  INFO -- : 文件 > /etc/service/unicorn/run  chmod: +x  chown: 
I, [2021-06-14T20:43:37.573935 #1]  INFO -- : 文件 > /etc/service/nginx/run  chmod: +x  chown: 
I, [2021-06-14T20:43:37.587581 #1]  INFO -- : 文件 > /etc/runit/3.d/01-nginx  chmod: +x  chown: 
I, [2021-06-14T20:43:37.594449 #1]  INFO -- : 文件 > /etc/runit/3.d/02-unicorn  chmod: +x  chown: 
I, [2021-06-14T20:43:37.594597 #1]  INFO -- : 将 /etc/service/unicorn/run 中的 # postgres 替换为 sv start postgres || exit 1
I, [2021-06-14T20:43:37.594867 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2021-06-14T20:43:37.597846 #1]  INFO -- : > cd /var/www/discourse && git reset --hard
200:C 14 Jun 2021 20:43:37.605 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
200:C 14 Jun 2021 20:43:37.605 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=200, just started
200:C 14 Jun 2021 20:43:37.605 # 配置已加载
200:M 14 Jun 2021 20:43:37.606 * monotonic clock: POSIX clock_gettime
200:M 14 Jun 2021 20:43:37.607 # 警告:无法创建服务器 TCP 监听套接字 *:6379:bind: 地址已在使用中
200:M 14 Jun 2021 20:43:37.607 # 在端口 6379 (TCP) 上监听失败,正在中止。
正在检出文件:100% (28860/28860),完成。
I, [2021-06-14T20:43:42.073375 #1]  INFO -- : HEAD 现在位于 74f71503 FEATURE: 当整个主题合并到另一个主题后,自动定时删除存根主题 (#13187)

I, [2021-06-14T20:43:42.074080 #1]  INFO -- : > cd /var/www/discourse && git clean -f
I, [2021-06-14T20:43:42.219169 #1]  INFO -- : 
I, [2021-06-14T20:43:42.219598 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches --add origin master
I, [2021-06-14T20:43:42.229970 #1]  INFO -- : 
I, [2021-06-14T20:43:42.230355 #1]  INFO -- : > cd /var/www/discourse && git remote set-branches origin tests-passed
I, [2021-06-14T20:43:42.238944 #1]  INFO -- : 
I, [2021-06-14T20:43:42.239762 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth 1 origin tests-passed
来自 https://github.com/discourse/discourse
 * 分支              tests-passed -> FETCH_HEAD
 * [新分支]        tests-passed -> origin/tests-passed
I, [2021-06-14T20:43:45.057423 #1]  INFO -- : 
I, [2021-06-14T20:43:45.058071 #1]  INFO -- : > cd /var/www/discourse && git checkout tests-passed
切换到新分支 'tests-passed'
I, [2021-06-14T20:43:45.816357 #1]  INFO -- : 分支 'tests-passed' 已设置为跟踪来自 'origin' 的远程分支 'tests-passed'。

I, [2021-06-14T20:43:45.817039 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2021-06-14T20:43:45.826749 #1]  INFO -- : 
I, [2021-06-14T20:43:45.827249 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2021-06-14T20:43:45.831952 #1]  INFO -- : 
I, [2021-06-14T20:43:45.832450 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2021-06-14T20:43:45.837227 #1]  INFO -- : 
I, [2021-06-14T20:43:45.837784 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2021-06-14T20:43:45.842277 #1]  INFO -- : 
I, [2021-06-14T20:43:45.842839 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2021-06-14T20:43:45.848716 #1]  INFO -- : 
I, [2021-06-14T20:43:45.849244 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2021-06-14T20:43:45.853781 #1]  INFO -- : 
I, [2021-06-14T20:43:45.854368 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2021-06-14T20:43:45.862602 #1]  INFO -- : 
I, [2021-06-14T20:43:45.862982 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2021-06-14T20:43:45.870208 #1]  INFO -- : 
I, [2021-06-14T20:43:45.870773 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2021-06-14T20:43:45.879241 #1]  INFO -- : 
I, [2021-06-14T20:43:45.879855 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2021-06-14T20:43:45.887230 #1]  INFO -- : 
I, [2021-06-14T20:43:45.887785 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2021-06-14T20:43:45.896465 #1]  INFO -- : 
I, [2021-06-14T20:43:45.897013 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2021-06-14T20:43:45.904285 #1]  INFO -- : 
I, [2021-06-14T20:43:45.904987 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2021-06-14T20:43:46.506807 #1]  INFO -- : 
I, [2021-06-14T20:43:46.507139 #1]  INFO -- : > cd /var/www/discourse && find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2021-06-14T20:43:46.516332 #1]  INFO -- : 
I, [2021-06-14T20:43:46.516985 #1]  INFO -- : 将 /etc/service/unicorn/run 中的 # redis 替换为 sv start redis || exit 1
I, [2021-06-14T20:43:46.518700 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
正在克隆到 'docker_manager'...
I, [2021-06-14T20:43:47.994787 #1]  INFO -- : 
I, [2021-06-14T20:43:47.995523 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-solved.git
正在克隆到 'discourse-solved'...
I, [2021-06-14T20:43:48.894663 #1]  INFO -- : 
I, [2021-06-14T20:43:48.895108 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-assign.git
正在克隆到 'discourse-assign'...
I, [2021-06-14T20:43:49.890703 #1]  INFO -- : 
I, [2021-06-14T20:43:49.891259 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-user-notes.git
正在克隆到 'discourse-user-notes'...
I, [2021-06-14T20:43:50.858131 #1]  INFO -- : 
I, [2021-06-14T20:43:50.858720 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-canned-replies.git
正在克隆到 'discourse-canned-replies'...
I, [2021-06-14T20:43:51.880063 #1]  INFO -- : 
I, [2021-06-14T20:43:51.880335 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-tooltips.git
正在克隆到 'discourse-tooltips'...
I, [2021-06-14T20:43:52.740379 #1]  INFO -- : 
I, [2021-06-14T20:43:52.740818 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-characters-required.git
正在克隆到 'discourse-characters-required'...
I, [2021-06-14T20:43:53.556996 #1]  INFO -- : 
I, [2021-06-14T20:43:53.557554 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-cakeday.git
正在克隆到 'discourse-cakeday'...
I, [2021-06-14T20:43:54.909869 #1]  INFO -- : 
I, [2021-06-14T20:43:54.911115 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-data-explorer.git
正在克隆到 'discourse-data-explorer'...
I, [2021-06-14T20:43:55.842237 #1]  INFO -- : 
I, [2021-06-14T20:43:55.843187 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-yearly-review.git
正在克隆到 'discourse-yearly-review'...
I, [2021-06-14T20:43:56.661489 #1]  INFO -- : 
I, [2021-06-14T20:43:56.661858 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-whos-online.git
正在克隆到 'discourse-whos-online'...
I, [2021-06-14T20:43:57.494156 #1]  INFO -- : 
I, [2021-06-14T20:43:57.495054 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-chat-integration.git
正在克隆到 'discourse-chat-integration'...
I, [2021-06-14T20:43:58.580532 #1]  INFO -- : 
I, [2021-06-14T20:43:58.580764 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-checklist.git
正在克隆到 'discourse-checklist'...
I, [2021-06-14T20:43:59.532088 #1]  INFO -- : 
I, [2021-06-14T20:43:59.532553 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
正在克隆到 'discourse-plugin-linkedin-auth'...
I, [2021-06-14T20:44:00.442385 #1]  INFO -- : 
I, [2021-06-14T20:44:00.443170 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-footnote.git
正在克隆到 'discourse-footnote'...
I, [2021-06-14T20:44:01.360433 #1]  INFO -- : 
I, [2021-06-14T20:44:01.360724 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-bcc.git
正在克隆到 'discourse-bcc'...
I, [2021-06-14T20:44:02.397428 #1]  INFO -- : 
I, [2021-06-14T20:44:02.398230 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-push-notifications.git
正在克隆到 'discourse-push-notifications'...
I, [2021-06-14T20:44:03.251425 #1]  INFO -- : 
I, [2021-06-14T20:44:03.252219 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/paviliondev/discourse-follow.git
正在克隆到 'discourse-follow'...
I, [2021-06-14T20:44:04.130192 #1]  INFO -- : 
I, [2021-06-14T20:44:04.130759 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/davidtaylorhq/discourse-telegram-notifications.git
正在克隆到 'discourse-telegram-notifications'...
I, [2021-06-14T20:44:04.841531 #1]  INFO -- : 
I, [2021-06-14T20:44:04.842641 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2021-06-14T20:44:04.849495 #1]  INFO -- : 
I, [2021-06-14T20:44:04.850244 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2021-06-14T20:44:04.853726 #1]  INFO -- : 
I, [2021-06-14T20:44:04.854379 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2021-06-14T20:44:04.858443 #1]  INFO -- : 
I, [2021-06-14T20:44:04.859257 #1]  INFO -- : 将 /etc/nginx/nginx.conf 中的 pid /run/nginx.pid; 替换为 daemon off;
I, [2021-06-14T20:44:04.860061 #1]  INFO -- : 将 /etc/nginx/conf.d/discourse.conf 中的 (?m-ix:upstream[^\}]+\}) 替换为 upstream discourse { server 127.0.0.1:3000; }
I, [2021-06-14T20:44:04.860716 #1]  INFO -- : 将 /etc/nginx/conf.d/discourse.conf 中的 (?-mix:server_name.+$) 替换为 server_name _ ;
I, [2021-06-14T20:44:04.861470 #1]  INFO -- : 将 /etc/nginx/conf.d/discourse.conf 中的 (?-mix:client_max_body_size.+$) 替换为 client_max_body_size $upload_size ;
I, [2021-06-14T20:44:04.862438 #1]  INFO -- : > echo "done configuring web"
I, [2021-06-14T20:44:04.865608 #1]  INFO -- : done configuring web

I, [2021-06-14T20:44:04.866449 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2021-06-14T20:44:06.350029 #1]  INFO -- : 成功安装 bundler-2.2.19
安装了 1 个 gem

I, [2021-06-14T20:44:06.350429 #1]  INFO -- : > cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+
I, [2021-06-14T20:44:07.650595 #1]  INFO -- : 
I, [2021-06-14T20:44:07.651328 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'
[已弃用] `--deployment` 标志已弃用,因为它依赖于在不同 bundler 调用之间保持记忆,而 bundler 在未来版本中将不再这样做。请改用 `bundle config set --local deployment 'true'`,并停止使用该标志
[已弃用] `--without` 标志已弃用,因为它依赖于在不同 bundler 调用之间保持记忆,而 bundler 在未来版本中将不再这样做

这看起来像是迁移在数据库中的某条现有记录上卡住了。你试过以下步骤吗?

  • ./launcher enter app
  • rails c
  • Post.where("raw LIKE '%\\u0000%'")

以检查你的网站上是否有包含该 Unicode 转义序列的帖子。我尚未对此进行测试,结果可能因情况而异。

谢谢 @justin。我输入命令后,输出如下:

[1] pry(main)> Post.where("raw LIKE '%\u0000%'")
=> #<Post::ActiveRecord_Relation:0x119cc>

只有一行。我该如何解读这个输出?接下来你有什么建议?

论坛现已上线运行,但顶部会显示一条横幅消息:“由于负载极高,当前页面将暂时以未登录用户的视角向所有人展示。”详情稍后发布。

不幸的是,问题又出现了。在升级后,我可以使用 ./launcher start app 启动网站,但它似乎只能部分工作。用户无法使用用户名和密码登录,只能通过其他登录方式登录。此外,当尝试查看用户个人资料卡片时,它不会弹出。如果有人尝试打开用户的页面或他们自己的个人资料页面,他们会看到以下带有标题“哎呀 - 错误 500”的错误消息:

哎呀

驱动此讨论论坛的软件遇到了意外问题。对于由此带来的不便,我们深表歉意。

关于错误的详细信息已记录,并生成了自动通知。我们将对此进行调查。

无需采取进一步行动。但是,如果错误状况持续存在,您可以通过在网站的反馈类别中发布讨论主题来提供额外的详细信息,包括重现错误的步骤。

这次我也尝试通过 Web 界面进行升级。我成功升级了其他一些组件(如 Docker 管理器和一些官方插件),并且可以在管理员日志中看到升级结果。
但是,当我尝试升级 Discourse 实例时,它仍然失败,日志如下:

********************************************************
*** 请耐心等待,接下来的步骤可能需要一些时间 ***
********************************************************
正在重启 Unicorn 以释放内存
正在重启 unicorn pid: 52
等待 Unicorn 重新加载。
等待 Unicorn 重新加载..
等待 Unicorn 重新加载...
等待 Unicorn 重新加载....
等待 Unicorn 重新加载.....
等待 Unicorn 重新加载......
等待 Unicorn 重新加载.......
等待 Unicorn 重新加载........
等待 Unicorn 重新加载.........
等待 Unicorn 重新加载..........
等待 Unicorn 重新加载...........
等待 Unicorn 重新加载............
等待 Unicorn 重新加载.............
等待 Unicorn 重新加载..............
等待 Unicorn 重新加载...............
正在停止 3 个 Unicorn worker 以释放内存
正在停止作业队列以回收内存,主进程 ID 为 22756
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 * [new tag]           v1.1.0.beta6b  -> v1.1.0.beta6b
 * [new tag]           v1.1.0.beta7   -> v1.1.0.beta7
 * [new tag]           v1.1.0.beta8   -> v1.1.0.beta8
 * [new tag]           v1.1.1         -> v1.1.1
 * [new tag]           v1.1.2         -> v1.1.2
 * [new tag]           v1.1.3         -> v1.1.3
 * [new tag]           v1.2.0         -> v1.2.0
 * [new tag]           v1.2.0.beta1   -> v1.2.0.beta1
 * [new tag]           v1.2.0.beta2   -> v1.2.0.beta2
 * [new tag]           v1.2.0.beta3   -> v1.2.0.beta3
 * [new tag]           v1.2.0.beta4   -> v1.2.0.beta4
 * [new tag]           v1.2.0.beta5   -> v1.2.0.beta5
 * [new tag]           v1.2.0.beta6   -> v1.2.0.beta6
 * [new tag]           v1.2.0.beta7   -> v1.2.0.beta7
 * [new tag]           v1.2.0.beta8   -> v1.2.0.beta8
 * [new tag]           v1.2.0.beta9   -> v1.2.0.beta9
 * [new tag]           v1.2.1         -> v1.2.1
 * [new tag]           v1.2.2         -> v1.2.2
 * [new tag]           v1.2.3         -> v1.2.3
 * [new tag]           v1.2.4         -> v1.2.4
 * [new tag]           v1.3.0         -> v1.3.0
 * [new tag]           v1.3.0.beta1   -> v1.3.0.beta1
 * [new tag]           v1.3.0.beta10  -> v1.3.0.beta10
 * [new tag]           v1.3.0.beta11  -> v1.3.0.beta11
 * [new tag]           v1.3.0.beta2   -> v1.3.0.beta2
 * [new tag]           v1.3.0.beta3   -> v1.3.0.beta3
 * [new tag]           v1.3.0.beta4   -> v1.3.0.beta4
 * [new tag]           v1.3.0.beta5   -> v1.3.0.beta5
 * [new tag]           v1.3.0.beta6   -> v1.3.0.beta6
 * [new tag]           v1.3.0.beta7   -> v1.3.0.beta7
 * [new tag]           v1.3.0.beta8   -> v1.3.0.beta8
 * [new tag]           v1.3.0.beta9   -> v1.3.0.beta9
 * [new tag]           v1.3.1         -> v1.3.1
 * [new tag]           v1.3.2         -> v1.3.2
 * [new tag]           v1.3.3         -> v1.3.3
 * [new tag]           v1.3.4         -> v1.3.4
 * [new tag]           v1.3.5         -> v1.3.5
 * [new tag]           v1.4.0         -> v1.4.0
 * [new tag]           v1.4.0.beta1   -> v1.4.0.beta1
 * [new tag]           v1.4.0.beta10  -> v1.4.0.beta10
 * [new tag]           v1.4.0.beta11  -> v1.4.0.beta11
 * [new tag]           v1.4.0.beta12  -> v1.4.0.beta12
 * [new tag]           v1.4.0.beta2   -> v1.4.0.beta2
 * [new tag]           v1.4.0.beta3   -> v1.4.0.beta3
 * [new tag]           v1.4.0.beta4   -> v1.4.0.beta4
 * [new tag]           v1.4.0.beta5   -> v1.4.0.beta5
 * [new tag]           v1.4.0.beta6   -> v1.4.0.beta6
 * [new tag]           v1.4.0.beta7   -> v1.4.0.beta7
 * [new tag]           v1.4.0.beta8   -> v1.4.0.beta8
 * [new tag]           v1.4.0.beta9   -> v1.4.0.beta9
 * [new tag]           v1.4.1         -> v1.4.1
 * [new tag]           v1.4.2         -> v1.4.2
 * [new tag]           v1.4.3         -> v1.4.3
 * [new tag]           v1.4.4         -> v1.4.4
 * [new tag]           v1.4.5         -> v1.4.5
 * [new tag]           v1.4.6         -> v1.4.6
 * [new tag]           v1.4.7         -> v1.4.7
 * [new tag]           v1.5.0         -> v1.5.0
 * [new tag]           v1.5.0.beta1   -> v1.5.0.beta1
 * [new tag]           v1.5.0.beta10  -> v1.5.0.beta10
 * [new tag]           v1.5.0.beta11  -> v1.5.0.beta11
 * [new tag]           v1.5.0.beta12  -> v1.5.0.beta12
 * [new tag]           v1.5.0.beta13  -> v1.5.0.beta13
 * [new tag]           v1.5.0.beta13b -> v1.5.0.beta13b
 * [new tag]           v1.5.0.beta14  -> v1.5.0.beta14
 * [new tag]           v1.5.0.beta2   -> v1.5.0.beta2
 * [new tag]           v1.5.0.beta3   -> v1.5.0.beta3
 * [new tag]           v1.5.0.beta4   -> v1.5.0.beta4
 * [new tag]           v1.5.0.beta5   -> v1.5.0.beta5
 * [new tag]           v1.5.0.beta6   -> v1.5.0.beta6
 * [new tag]           v1.5.0.beta7   -> v1.5.0.beta7
 * [new tag]           v1.5.0.beta8   -> v1.5.0.beta8
 * [new tag]           v1.5.0.beta9   -> v1.5.0.beta9
 * [new tag]           v1.5.1         -> v1.5.1
 * [new tag]           v1.5.17        -> v1.5.17
 * [new tag]           v1.5.2         -> v1.5.2
 * [new tag]           v1.5.22        -> v1.5.22
 * [new tag]           v1.5.3         -> v1.5.3
 * [new tag]           v1.5.4         -> v1.5.4
 * [new tag]           v1.6.0         -> v1.6.0
 * [new tag]           v1.6.0.beta1   -> v1.6.0.beta1
 * [new tag]           v1.6.0.beta10  -> v1.6.0.beta10
 * [new tag]           v1.6.0.beta11  -> v1.6.0.beta11
 * [new tag]           v1.6.0.beta12  -> v1.6.0.beta12
 * [new tag]           v1.6.0.beta2   -> v1.6.0.beta2
 * [new tag]           v1.6.0.beta3   -> v1.6.0.beta3
 * [new tag]           v1.6.0.beta4   -> v1.6.0.beta4
 * [new tag]           v1.6.0.beta5   -> v1.6.0.beta5
 * [new tag]           v1.6.0.beta6   -> v1.6.0.beta6
 * [new tag]           v1.6.0.beta7   -> v1.6.0.beta7
 * [new tag]           v1.6.0.beta8   -> v1.6.0.beta8
 * [new tag]           v1.6.0.beta9   -> v1.6.0.beta9
 * [new tag]           v1.6.1         -> v1.6.1
 * [new tag]           v1.6.10        -> v1.6.10
 * [new tag]           v1.6.2         -> v1.6.2
 * [new tag]           v1.6.3         -> v1.6.3
 * [new tag]           v1.6.4         -> v1.6.4
 * [new tag]           v1.6.5         -> v1.6.5
 * [new tag]           v1.6.6         -> v1.6.6
 * [new tag]           v1.6.7         -> v1.6.7
 * [new tag]           v2.2.0.beta1   -> v2.2.0.beta1
 * [new tag]           v2.2.0.beta10  -> v2.2.0.beta10
 * [new tag]           v2.2.0.beta2   -> v2.2.0.beta2
 * [new tag]           v2.2.0.beta3   -> v2.2.0.beta3
 * [new tag]           v2.2.0.beta4   -> v2.2.0.beta4
 * [new tag]           v2.2.0.beta5   -> v2.2.0.beta5
 * [new tag]           v2.2.0.beta6   -> v2.2.0.beta6
 * [new tag]           v2.2.0.beta7   -> v2.2.0.beta7
 * [new tag]           v2.2.0.beta8   -> v2.2.0.beta8
 * [new tag]           v2.2.0.beta9   -> v2.2.0.beta9
 * [new tag]           v2.2.1         -> v2.2.1
 * [new tag]           v2.2.10        -> v2.2.10
 * [new tag]           v2.2.11        -> v2.2.11
 * [new tag]           v2.2.15        -> v2.2.15
 * [new tag]           v2.2.2         -> v2.2.2
 * [new tag]           v2.2.3         -> v2.2.3
 * [new tag]           v2.2.4         -> v2.2.4
 * [new tag]           v2.2.5         -> v2.2.5
 * [new tag]           v2.2.6         -> v2.2.6
 * [new tag]           v2.2.7         -> v2.2.7
 * [new tag]           v2.2.8         -> v2.2.8
 * [new tag]           v2.3.0         -> v2.3.0
 * [new tag]           v2.3.0.beta1   -> v2.3.0.beta1
 * [new tag]           v2.3.0.beta10  -> v2.3.0.beta10
 * [new tag]           v2.3.0.beta11  -> v2.3.0.beta11
 * [new tag]           v2.3.0.beta2   -> v2.3.0.beta2
 * [new tag]           v2.3.0.beta3   -> v2.3.0.beta3
 * [new tag]           v2.3.0.beta4   -> v2.3.0.beta4
 * [new tag]           v2.3.0.beta5   -> v2.3.0.beta5
 * [new tag]           v2.3.0.beta6   -> v2.3.0.beta6
 * [new tag]           v2.3.0.beta7   -> v2.3.0.beta7
 * [new tag]           v2.3.0.beta8   -> v2.3.0.beta8
 * [new tag]           v2.3.0.beta9   -> v2.3.0.beta9
 * [new tag]           v2.3.1         -> v2.3.1
 * [new tag]           v2.3.10        -> v2.3.10
 * [new tag]           v2.3.2         -> v2.3.2
 * [new tag]           v2.3.3         -> v2.3.3
 * [new tag]           v2.3.4         -> v2.3.4
 * [new tag]           v2.3.5         -> v2.3.5
 * [new tag]           v2.3.6         -> v2.3.6
 * [new tag]           v2.3.7         -> v2.3.7
 * [new tag]           v2.3.8         -> v2.3.8
 * [new tag]           v2.3.9         -> v2.3.9
 * [new tag]           v2.4.0         -> v2.4.0
 * [new tag]           v2.4.0.beta1   -> v2.4.0.beta1
 * [new tag]           v2.4.0.beta10  -> v2.4.0.beta10
 * [new tag]           v2.4.0.beta11  -> v2.4.0.beta11
 * [new tag]           v2.4.0.beta2   -> v2.4.0.beta2
 * [new tag]           v2.4.0.beta3   -> v2.4.0.beta3
 * [new tag]           v2.4.0.beta4   -> v2.4.0.beta4
 * [new tag]           v2.4.0.beta5   -> v2.4.0.beta5
 * [new tag]           v2.4.0.beta6   -> v2.4.0.beta6
 * [new tag]           v2.4.0.beta7   -> v2.4.0.beta7
 * [new tag]           v2.4.0.beta8   -> v2.4.0.beta8
 * [new tag]           v2.4.0.beta9   -> v2.4.0.beta9
 * [new tag]           v2.4.1         -> v2.4.1
 * [new tag]           v2.4.2         -> v2.4.2
 * [new tag]           v2.4.3         -> v2.4.3
 * [new tag]           v2.4.4         -> v2.4.4
 * [new tag]           v2.4.5         -> v2.4.5
 * [new tag]           v2.5.0         -> v2.5.0
 * [new tag]           v2.5.0.beta1   -> v2.5.0.beta1
 * [new tag]           v2.5.0.beta2   -> v2.5.0.beta2
 * [new tag]           v2.5.0.beta3   -> v2.5.0.beta3
 * [new tag]           v2.5.0.beta4   -> v2.5.0.beta4
 * [new tag]           v2.5.0.beta5   -> v2.5.0.beta5
 * [new tag]           v2.5.0.beta6   -> v2.5.0.beta6
 * [new tag]           v2.5.0.beta7   -> v2.5.0.beta7
 * [new tag]           v2.5.1         -> v2.5.1
 * [new tag]           v2.5.2         -> v2.5.2
 * [new tag]           v2.5.3         -> v2.5.3
 * [new tag]           v2.5.4         -> v2.5.4
 * [new tag]           v2.5.5         -> v2.5.5
 * [new tag]           v2.5.6         -> v2.5.6
 * [new tag]           v2.6.0         -> v2.6.0
 * [new tag]           v2.6.0.beta1   -> v2.6.0.beta1
 * [new tag]           v2.6.0.beta2   -> v2.6.0.beta2
 * [new tag]           v2.6.0.beta3   -> v2.6.0.beta3
 * [new tag]           v2.6.0.beta4   -> v2.6.0.beta4
 * [new tag]           v2.6.0.beta5   -> v2.6.0.beta5
 * [new tag]           v2.6.0.beta6   -> v2.6.0.beta6
 * [new tag]           v2.6.1         -> v2.6.1
 * [new tag]           v2.6.2         -> v2.6.2
 * [new tag]           v2.6.3         -> v2.6.3
 * [new tag]           v2.6.4         -> v2.6.4
 * [new tag]           v2.6.5         -> v2.6.5
 * [new tag]           v2.6.6         -> v2.6.6
 * [new tag]           v2.6.7         -> v2.6.7
 * [new tag]           v2.7.0         -> v2.7.0
 * [new tag]           v2.7.0.beta1   -> v2.7.0.beta1
 * [new tag]           v2.7.0.beta2   -> v2.7.0.beta2
 * [new tag]           v2.7.0.beta3   -> v2.7.0.beta3
 * [new tag]           v2.7.0.beta4   -> v2.7.0.beta4
 * [new tag]           v2.7.0.beta5   -> v2.7.0.beta5
 * [new tag]           v2.7.0.beta6   -> v2.7.0.beta6
 * [new tag]           v2.7.0.beta7   -> v2.7.0.beta7
 * [new tag]           v2.7.1         -> v2.7.1
 * [new tag]           v2.7.2         -> v2.7.2
 * [new tag]           v2.7.3         -> v2.7.3
 * [new tag]           v2.7.4         -> v2.7.4
HEAD is now at ff6114d83f FIX: Do not add mailing list headers to group SMTP emails (#13431)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
Warning: the running version of Bundler (2.2.15) is older than the version that created the lockfile (2.2.19). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.19`.
Fetching gem metadata from https://rubygems.org/............
Using rake 13.0.3
Fetching concurrent-ruby 1.1.9
Using minitest 5.14.4
Using zeitwerk 2.4.2
Using builder 3.2.4
Using erubi 1.10.0
Using racc 1.5.2
Using crass 1.0.6
Using rack 2.2.3
Using mini_mime 1.1.0
Using public_suffix 4.0.6
Using aws-eventstream 1.1.1
Using aws-partitions 1.432.0
Using jmespath 1.4.0
Using ember-source 2.18.2
Using msgpack 1.4.2
Using bundler 2.2.15
Using byebug 11.1.3
Using cbor 0.5.9.6
Using coderay 1.1.3
Using colored2 3.1.2
Using connection_pool 2.2.5
Using openssl 2.2.0
Using cppjieba_rb 0.3.3
Using diffy 3.4.0
Using method_source 1.0.0
Using chunky_png 1.4.0
Fetching execjs 2.8.1
Using thor 1.1.0
Using discourse-ember-source 3.12.2.3
Using discourse-fonts 0.0.8
Using regexp_parser 2.1.1
Using email_reply_trimmer 0.1.13
Using exifr 1.3.9
Fetching faraday-em_http 1.0.0
Fetching excon 0.82.0
Installing faraday-em_http 1.0.0
Installing execjs 2.8.1
Fetching faraday-em_synchrony 1.0.0
Fetching faraday-excon 1.1.0
Installing excon 0.82.0
Installing faraday-em_synchrony 1.0.0
Installing concurrent-ruby 1.1.9
Installing faraday-excon 1.1.0
Using faraday-net_http 1.0.1
Fetching faraday-net_http_persistent 1.1.0
Using multipart-post 2.1.1
Using ruby2_keywords 0.0.4
Using fast_blank 1.0.0
Using fast_xs 0.8.0
Fetching fastimage 2.2.4
Fetching ffi 1.15.3
Installing faraday-net_http_persistent 1.1.0
Using fspath 3.1.2
Using gc_tracer 1.5.1
Using guess_html_encoding 0.0.11
Using hana 1.3.7
Using hashie 4.1.0
Using highline 2.0.3
Installing fastimage 2.2.4
Using hkdf 0.3.0
Using htmlentities 4.3.4
Using http_accept_language 2.1.1
Fetching image_size 2.1.0
Using in_threads 1.5.4
Using progress 3.6.0
Using json 2.5.1
Using uri_template 0.7.0
Fetching jwt 2.2.3
Fetching kgio 2.11.4
Installing jwt 2.2.3
Installing image_size 2.1.0
Installing kgio 2.11.4 with native extensions
Installing ffi 1.15.3 with native extensions
Fetching libv8-node 15.14.0.1 (x86_64-linux)
Using logstash-event 1.2.02
Using logster 2.9.6
Using lru_redux 1.1.0
Using lz4-ruby 0.3.3
Using maxminddb 0.1.22
Using memory_profiler 1.0.0
Fetching redis 4.3.1
Installing redis 4.3.1
Using mini_sql 1.1.3
Using multi_json 1.15.0
Using multi_xml 0.6.0
Using mustache 1.1.1
Using nio4r 2.5.7
Using oauth 0.5.6
Fetching oj 3.11.6
Installing oj 3.11.6 with native extensions
Installing libv8-node 15.14.0.1 (x86_64-linux)
Using optimist 3.0.1
Using pg 1.2.3
Using r2 0.2.7
Fetching raindrops 0.19.2
Installing raindrops 0.19.2 with native extensions
Using rchardet 1.8.0
Using rubyzip 2.3.0
Using tilt 2.0.10
Using sshkey 2.0.0
Fetching stackprof 0.2.17
Installing stackprof 0.2.17 with native extensions
Using unf_ext 0.0.7.7
Using xorcist 1.1.2
Fetching nokogiri 1.11.7 (x86_64-linux)
Installing nokogiri 1.11.7 (x86_64-linux)
Using rack-test 1.1.0
Using mail 2.8.0.edge from https://github.com/discourse/mail.git (at master@5b700fc)
Using addressable 2.7.0
Using aws-sigv4 1.2.3
Fetching bootsnap 1.7.5
Installing bootsnap 1.7.5 with native extensions
Using openssl-signature_algorithm 1.1.1
Using ember-data-source 3.0.2
Using request_store 1.5.0
Fetching message_bus 3.3.6
Fetching rack-mini-profiler 2.3.2
Installing message_bus 3.3.6
Using rack-protection 2.1.0
Using pry 0.13.1
Using ecma-re-validator 0.3.0
Using barber 0.12.2
Using uglifier 4.2.0
Fetching faraday 1.4.2
Installing rack-mini-profiler 2.3.2
Installing faraday 1.4.2
Using omniauth 1.9.1
Using i18n 1.8.10
Fetching tzinfo 2.0.4
Using sprockets 3.7.2
Fetching image_optim 0.30.0
Installing tzinfo 2.0.4
Using webpush 1.1.0
Using logstash-logger 0.26.1
Using sidekiq 6.2.1
Fetching puma 5.3.2
Installing image_optim 0.30.0
Using redis-namespace 1.8.1
Using mini_racer 0.4.0
Fetching rqrcode 2.0.0
Installing puma 5.3.2 with native extensions
Installing rqrcode 2.0.0
Using unf 0.1.4
Fetching loofah 2.10.0
Installing loofah 2.10.0
Using nokogumbo 2.0.5
Using ruby-readability 0.7.0
Using aws-sdk-core 3.112.1
Using css_parser 1.9.0
Using cose 1.2.0
Using json_schemer 0.2.18
Using pry-byebug 3.9.0
Using pry-rails 0.3.9
Using omniauth-oauth 1.2.0
Using oauth2 1.4.7
Using ember-handlebars-template 0.8.0
Fetching activesupport 6.1.3.2
Installing activesupport 6.1.3.2
Using mini_scheduler 0.13.0
Using rails-html-sanitizer 1.3.0
Using sanitize 5.2.3
Using aws-sdk-kms 1.42.0
Using aws-sdk-sns 1.38.0
Using omniauth-oauth2 1.7.1
Using omniauth-twitter 1.4.0
Using rails-dom-testing 2.0.3
Using globalid 0.4.2
Fetching activemodel 6.1.3.2
Installing activemodel 6.1.3.2
Using aws-sdk-s3 1.90.0
Using omniauth-facebook 8.0.0
Using omniauth-github 1.4.0
Using omniauth-google-oauth2 0.8.2
Fetching actionview 6.1.3.2
Installing actionview 6.1.3.2
Fetching activejob 6.1.3.2
Using active_model_serializers 0.8.4
Fetching activerecord 6.1.3.2
Installing activejob 6.1.3.2
Fetching actionpack 6.1.3.2
Installing activerecord 6.1.3.2
Installing actionpack 6.1.3.2
Using actionview_precompiler 0.2.3
Using unicorn 6.0.0
Fetching actionmailer 6.1.3.2
Installing actionmailer 6.1.3.2
Fetching railties 6.1.3.2
Using sprockets-rails 3.2.2
Using seed-fu 2.3.9
Installing railties 6.1.3.2
Using jquery-rails 4.4.0
Using lograge 0.11.2
Fetching rails_failover 0.7.3
Fetching rails_multisite 3.0.0
Installing rails_multisite 3.0.0
Installing rails_failover 0.7.3
Using discourse-ember-rails 0.18.6
Using mini_suffix 0.3.2
Using rbtrace 0.4.14
Using sassc 2.0.1
Using sassc-rails 2.1.2
Bundle complete! 126 Gemfile dependencies, 169 gems now installed.
Gems in the groups test and development were not installed.
Bundled gems are installed into `./vendor/bundle`
Post-install message from image_optim:
Rails image assets optimization is extracted into image_optim_rails gem
You can safely remove `config.assets.image_optim = false` if you are not going to use that gem
$ bundle exec rake plugin:pull_compatible_all
discourse-tooltips is already at latest compatible version
discourse-characters-required is already at latest compatible version
discourse-user-notes is already at latest compatible version
discourse-solved is already at latest compatible version
discourse-push-notifications is already at latest compatible version
docker_manager is already at latest compatible version
discourse-checklist is already at latest compatible version
discourse-whos-online is already at latest compatible version
discourse-telegram-notifications is already at latest compatible version
discourse-yearly-review is already at latest compatible version
discourse-plugin-linkedin-auth is already at latest compatible version
discourse-follow is already at latest compatible version
discourse-bcc is already at latest compatible version
discourse-data-explorer is already at latest compatible version
discourse-canned-replies is already at latest compatible version
discourse-chat-integration is already at latest compatible version
discourse-assign is already at latest compatible version
discourse-cakeday is already at latest compatible version
discourse-footnote is already at latest compatible version
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate

--------------------------------------------------------------------------------
1 migrations failed!

Failed to migrate default
#<StandardError: An error has occurred, this and all later migrations canceled:

ERROR:  unsupported Unicode escape sequence
DETAIL:  \u0000 cannot be converted to text.
CONTEXT:  JSON data, line 1: {"raw":...
>
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.1.3/lib/mini_sql/postgres/connection.rb:209:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.1.3/lib/mini_sql/postgres/connection.rb:64:in `query_single'
/var/www/discourse/db/migrate/20210426193009_move_approved_queued_posts_topic_and_post_data.rb:5:in `up'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:870:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:870:in `exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/usr/local/lib/ruby/2.7.0/benchmark.rb:293:in `measure'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/usr/local/lib/ruby/2.7.0/benchmark.rb:293:in `measure'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:850:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:849:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1037:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1380:in `ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1302:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1251:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1416:in `block in with_advisory_lock_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1416:in `with_advisory_lock_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1251:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1086:in `up'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/migration.rb:1061:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/var/www/discourse/lib/tasks/db.rake:184:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/db.rake:148:in `block (3 levels) in execute_concurently'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/lib/tasks/db.rake:146:in `block (2 levels) in execute_concurently'

Multisite migrator is running using 1 threads

Migrating default
== 20210426193009 MoveApprovedQueuedPostsTopicAndPostData: migrating ==========
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:196:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:100:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.5/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
bin/rails:17:in `<main>'
Spinning up 3 Unicorn worker(s) that were stopped initially

有什么想法吗?

或许你可以运行 Post.where("raw LIKE '%\u0000%'").first 来查看该 ActiveRecord 关联中具体包含什么内容?