重建错误

I, [2025-07-23T07:29:09.853446 #1]  INFO -- : 
> cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
TypeError: wrong argument type Integer (expected String) (TypeError)

        _write(command)
               ^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:121:in `_write'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:121:in `block in write_multi'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:120:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:120:in `write_multi'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client/connection_mixin.rb:48:in `call_pipelined'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:798:in `block in connect'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client/middlewares.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:797:in `connect'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:759:in `raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:719:in `ensure_connected'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:314:in `call_v'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/client.rb:90:in `call_v'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:152:in `block in send_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `send_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/server.rb:90:in `info'
/var/www/discourse/lib/discourse_redis.rb:38:in `public_send'
/var/www/discourse/lib/discourse_redis.rb:38:in `block in method_missing'
/var/www/discourse/lib/discourse_redis.rb:29:in `ignore_readonly'
/var/www/discourse/lib/discourse_redis.rb:38:in `method_missing'
/var/www/discourse/config/initializers/001-redis.rb:9:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:693:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:693:in `block in load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2/lib/active_support/notifications.rb:212:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:692:in `load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:646:in `block (2 levels) in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:645:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:645:in `block in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:50:in `tsort_each_child'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:440:in `initialize!'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:416:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:567:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP =&gt; db:migrate =&gt; db:load_config =&gt; environment
(See full trace by running task with --trace)
I, [2025-07-23T07:29:12.543604 #1]  INFO -- : gem install aws-sdk-translate -v 1.35.0 -i /var/www/discourse/plugins/discourse-translator/gems/3.3.8 --no-document --ignore-dependencies --no-user-install
Successfully installed aws-sdk-translate-1.35.0
1 gem installed


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 883 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1


可能的原因:PERF: switch redis driver to hiredis by SamSaffron · Pull Request #33773 · discourse/discourse · GitHub

1 个赞

感谢您的报告,暂时回复,但您能否告诉我们更多关于您的环境中 Redis 的配置情况?这是一个多容器设置吗?

是的,多容器设置。redis 是一个独立的容器。

这是什么版本?我怀疑它是一个不支持 hiredis 的旧版本 Redis。

redis:7.4.3

1 个赞

您能帮忙向 GitHub · Where software is built 报告此问题吗?

理想情况下,重现步骤应如下所示:

  1. 运行您的 Redis 的 Docker 容器。(并与 byroot 共享以便于调试)
  2. 运行类似以下内容的命令来配置您的设置:
require 'hiredis-client'
require 'redis-client'
require 'redis'
Redis.new(... <- 您的 IP 等)。info

.info 应该会爆炸,这就是我们正在运行的。

我建议避免添加环境变量,因为你最终会忘记它

而是简单地重建,这目前已被撤销