Judith
(Judith Meyer)
1
您好,
在执行最近的升级(从某个 6 版本到 7 版本)时,rake db:migrate 因疑似重复用户名而失败。由于我不太熟悉 Linux 命令行,我尝试进入 Rails 控制台进行修复,但控制台无法加载,因为它无法连接到数据库。随后我搜索并尝试执行 /etc/init.d/postgresql restart,但操作失败,错误信息如下:
[....] 正在重启 PostgreSQL 12 数据库服务器:main [....]
错误:/usr/lib/postgresql/12/bin/pg_ctl /usr/lib/postgresql/12/bin/pg_ctl start -D /shared/postgres_data -l /var/log/postgresql/postgresql-12-main.log -s -o -c config_file="/etc/postgresql/12/main/postgresql.conf" 退出状态为 1:2021-03-08 20:19:10.354 UTC [763]
FATAL: 数据库文件与服务器不兼容 2021-03-08 20:19:10.354 UTC [763]
DETAIL: 数据目录是由 PostgreSQL 13 版本初始化的,与此版本 12.3 (Debian 12.3-1.pgdg100+1) 不兼容。p[FAIL: 无法启动服务器。请检查日志输出。... 失败!
失败!
随后我尝试执行 /etc/init.d/postgresql restart version 12.3,该命令没有报错,但也没有显示其他信息。目前仍然无法登录 psql(至少无法使用我在本论坛找到的 sudo -u postgres psql discourse 命令)。
请问有人能建议如何恢复服务器吗?另外,为什么最新的升级会导致如此严重的错误?我使用的是 30 分钟安装脚本,所有设置都是标准配置。我也愿意付费请人修复此问题。
sam
(Sam Saffron)
2
@pfaffman 专门提供此类支持,或许可以联系他。
你有具体的失败信息吗?可能需要稍微滚动一下,但我很好奇:
- 失败的迁移名称
- 导致失败的语句
pfaffman
(Jay Pfaffman)
3
中间某个环节出现了一个漏洞,导致用户名可以包含不同的大小写。随后该问题已被修复,不再允许这种情况。
你可能可以重新启动旧的容器,并通过用户界面进行修复。
但如果你已经有一段时间没有通过命令行进行升级,那么还会涉及数据库升级,这会让情况变得更加复杂。
如果问题并不比这更严重,我将在明天上午(太平洋时间)修复它:Redirecting…
如果你愿意支付额外费用以在今晚完成修复,请尽快发送邮件至 Jay@literatecomputing.com,我或许至少能先将其恢复运行。
Judith
(Judith Meyer)
4
这是来自 Web 界面的输出:
*** 请耐心等待,后续步骤可能需要一段时间 ***
********************************************************
正在轮询 Unicorn,以释放内存
正在重启 unicorn pid: 46
等待 Unicorn 重新加载。
等待 Unicorn 重新加载..
等待 Unicorn 重新加载...
等待 Unicorn 重新加载....
等待 Unicorn 重新加载.....
等待 Unicorn 重新加载......
等待 Unicorn 重新加载.......
等待 Unicorn 重新加载........
等待 Unicorn 重新加载.........
等待 Unicorn 重新加载..........
等待 Unicorn 重新加载...........
等待 Unicorn 重新加载............
正在停止 3 个 Unicorn 工作进程,以释放内存
正在停止作业队列以回收内存,主进程 pid 为 10397
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
来自 https://github.com/discourse/discourse
t [标签更新] latest-release -> latest-release
* [新标签] v2.5.6 -> v2.5.6
正在检出文件: 87% (2225/2539)
正在检出文件: 88% (2235/2539)
正在检出文件: 89% (2260/2539)
正在检出文件: 90% (2286/2539)
正在检出文件: 91% (2311/2539)
正在检出文件: 92% (2336/2539)
正在检出文件: 93% (2362/2539)
正在检出文件: 94% (2387/2539)
正在检出文件: 95% (2413/2539)
正在检出文件: 96% (2438/2539)
正在检出文件: 97% (2463/2539)
正在检出文件: 98% (2489/2539)
正在检出文件: 99% (2514/2539)
正在检出文件: 100% (2539/2539)
正在检出文件: 100% (2539/2539),完成。
HEAD 现在位于 0da649e4fa DEV:在标签模板中添加新的插件出口 (#12302)
$ bundle install --deployment --jobs 4 --without test development
[已弃用] `--deployment` 标志已弃用,因为它依赖于跨 bundler 调用被记住,而 bundler 在将来版本中不再这样做。请改用 `bundle config set deployment 'true'`,并停止使用此标志
[已弃用] `--without` 标志已弃用,因为它依赖于跨 bundler 调用被记住,而 bundler 在将来版本中不再这样做。请改用 `bundle config set without 'test development'`,并停止使用此标志
警告:正在运行的 Bundler 版本 (2.1.4) 早于创建 lockfile 的版本 (2.2.7)。建议您通过运行 `gem install bundler:2.2.7` 升级到创建 lockfile 的版本。
正在从 https://rubygems.org/ 获取 gem 元数据............
正在获取 https://github.com/discourse/mail.git
正在获取 rake 13.0.3
正在安装 rake 13.0.3
正在获取 concurrent-ruby 1.1.8
正在获取 minitest 5.14.4
使用 thread_safe 0.3.6
正在获取 zeitwerk 2.4.2
正在安装 zeitwerk 2.4.2
正在安装 minitest 5.14.4
正在安装 concurrent-ruby 1.1.8
使用 builder 3.2.4
使用 erubi 1.10.0
正在获取 racc 1.5.2
使用 crass 1.0.6
使用 rack 2.2.3
使用 mini_mime 1.0.2
使用 public_suffix 4.0.6
正在获取 aws-eventstream 1.1.1
正在安装带有原生扩展的 racc 1.5.2
正在安装 aws-eventstream 1.1.1
使用 aws-partitions 1.390.0
使用 jmespath 1.4.0
使用 ember-source 2.18.2
使用 execjs 2.7.0
正在获取 msgpack 1.4.2
正在安装带有原生扩展的 msgpack 1.4.2
使用 bundler 2.1.4
使用 byebug 11.1.3
使用 cbor 0.5.9.6
正在获取 chunky_png 1.4.0
正在安装 chunky_png 1.4.0
使用 coderay 1.1.3
使用 colored2 3.1.2
使用 connection_pool 2.2.3
使用 cppjieba_rb 0.3.3
使用 diffy 3.4.0
使用 method_source 1.0.0
正在获取 openssl 2.2.0
正在获取 thor 1.1.0
使用 discourse-ember-source 3.12.2.2
正在获取 discourse-fonts 0.0.7
正在安装 thor 1.1.0
正在安装带有原生扩展的 openssl 2.2.0
使用 exifr 1.3.9
使用 fspath 3.1.2
使用 image_size 1.5.0
使用 in_threads 1.5.4
使用 progress 3.5.2
使用 email_reply_trimmer 0.1.13
正在获取 excon 0.79.0
正在安装 excon 0.79.0
正在安装 discourse-fonts 0.0.7
使用 multipart-post 2.1.1
正在获取 faraday-net_http 1.0.1
正在获取 ruby2_keywords 0.0.4
使用 fast_blank 1.0.0
使用 fast_xs 0.8.0
正在获取 fastimage 2.2.3
正在安装 ruby2_keywords 0.0.4
正在安装 faraday-net_http 1.0.1
正在安装 fastimage 2.2.3
正在获取 ffi 1.15.0
使用 gc_tracer 1.5.1
使用 guess_html_encoding 0.0.11
使用 hashie 4.1.0
使用 highline 2.0.3
使用 hkdf 0.3.0
使用 htmlentities 4.3.4
使用 http_accept_language 2.1.1
正在获取 json 2.5.1
使用 jwt 2.2.2
使用 kgio 2.11.3
使用 libv8 8.4.255.0 (x86_64-linux)
使用 logstash-event 1.2.02
正在获取 logster 2.9.6
正在安装带有原生扩展的 json 2.5.1
正在安装 logster 2.9.6
正在安装带有原生扩展的 ffi 1.15.0
使用 lru_redux 1.1.0
使用 lz4-ruby 0.3.3
使用 maxminddb 0.1.22
正在获取 memory_profiler 1.0.0
正在安装 memory_profiler 1.0.0
使用 redis 4.2.5
使用 multi_json 1.15.0
使用 multi_xml 0.6.0
使用 mustache 1.1.1
正在获取 mini_sql 1.0.1
正在获取 nio4r 2.5.7
正在安装 mini_sql 1.0.1
正在安装带有原生扩展的 nio4r 2.5.7
正在获取 oauth 0.5.5
正在获取 oj 3.11.2
正在安装 oauth 0.5.5
正在安装带有原生扩展的 oj 3.11.2
使用 optimist 3.0.1
使用 pg 1.2.3
使用 r2 0.2.7
使用 raindrops 0.19.1
使用 rchardet 1.8.0
使用 rinku 2.0.6
使用 rotp 6.2.0
正在获取 rqrcode_core 0.2.0
使用 rtlit 0.0.5
使用 rubyzip 2.3.0
使用 tilt 2.0.10
使用 sshkey 2.0.0
使用 stackprof 0.2.16
使用 unf_ext 0.0.7.7
使用 xorcist 1.1.2
正在安装 rqrcode_core 0.2.0
使用 rack-test 1.1.0
使用来自 https://github.com/discourse/mail.git 的 mail 2.8.0.edge (位于 master@5b700fc)
正在获取 tzinfo 1.2.9
使用 addressable 2.7.0
使用 request_store 1.5.0
使用 message_bus 3.3.4
正在获取 rack-mini-profiler 2.3.1
使用 rack-protection 2.1.0
使用 aws-sigv4 1.2.2
使用 barber 0.12.2
使用 ember-data-source 3.0.2
使用 uglifier 4.2.0
正在获取 i18n 1.8.9
正在安装 i18n 1.8.9
正在安装 tzinfo 1.2.9
正在安装 rack-mini-profiler 2.3.1
使用 sprockets 3.7.2
正在获取 bootsnap 1.7.2
正在安装带有原生扩展的 bootsnap 1.7.2
使用 pry 0.13.1
使用 discourse_image_optim 0.26.2
正在获取 nokogiri 1.11.1 (x86_64-linux)
正在获取 openssl-signature_algorithm 1.1.1
正在获取 faraday 1.3.0
正在安装 openssl-signature_algorithm 1.1.1
正在安装 faraday 1.3.0
使用 omniauth 1.9.1
使用 logstash-logger 0.26.1
使用 mini_racer 0.3.1
使用 webpush 1.1.0
正在获取 sidekiq 6.1.3
正在安装 sidekiq 6.1.3
正在获取 redis-namespace 1.8.1
正在安装 nokogiri 1.11.1 (x86_64-linux)
正在安装 redis-namespace 1.8.1
正在获取 mini_suffix 0.3.2
正在安装 mini_suffix 0.3.2
使用 sassc 2.0.1
使用 rbtrace 0.4.14
正在获取 unicorn 5.8.0
正在获取 puma 5.2.2
正在安装带有原生扩展的 unicorn 5.8.0
正在安装带有原生扩展的 puma 5.2.2
使用 unf 0.1.4
正在获取 rqrcode 1.2.0
正在获取 css_parser 1.9.0
使用 aws-sdk-core 3.109.2
使用 ember-handlebars-template 0.8.0
使用 pry-byebug 3.9.0
使用 pry-rails 0.3.9
正在获取 activesupport 6.0.3.5
正在安装 css_parser 1.9.0
正在安装 rqrcode 1.2.0
正在安装 activesupport 6.0.3.5
使用 cose 1.2.0
正在获取 omniauth-oauth 1.2.0
正在安装 omniauth-oauth 1.2.0
使用 oauth2 1.4.4
正在获取 mini_scheduler 0.13.0
正在获取 loofah 2.9.0
正在安装 mini_scheduler 0.13.0
正在安装 loofah 2.9.0
正在获取 nokogumbo 2.0.4
使用 ruby-readability 0.7.0
使用 aws-sdk-kms 1.39.0
使用 aws-sdk-sns 1.35.0
正在获取 omniauth-oauth2 1.7.1
正在安装带有原生扩展的 nokogumbo 2.0.4
正在安装 omniauth-oauth2 1.7.1
使用 omniauth-twitter 1.4.0
使用 rails-html-sanitizer 1.3.0
使用 aws-sdk-s3 1.83.2
使用 omniauth-facebook 8.0.0
使用 omniauth-github 1.4.0
正在获取 omniauth-google-oauth2 0.8.1
正在安装 omniauth-google-oauth2 0.8.1
使用 rails-dom-testing 2.0.3
使用 globalid 0.4.2
正在获取 actionview 6.0.3.5
正在获取 activemodel 6.0.3.5
正在获取 activejob 6.0.3.5
正在安装 activejob 6.0.3.5
正在安装 activemodel 6.0.3.5
正在安装 actionview 6.0.3.5
正在获取 sanitize 5.2.3
正在安装 sanitize 5.2.3
使用 active_model_serializers 0.8.4
正在获取 activerecord 6.0.3.5
正在获取 onebox 2.2.6
正在安装 activerecord 6.0.3.5
正在安装 onebox 2.2.6
正在获取 actionpack 6.0.3.5
正在安装 actionpack 6.0.3.5
使用 actionview_precompiler 0.2.3
正在获取 railties 6.0.3.5
正在获取 actionmailer 6.0.3.5
正在安装 actionmailer 6.0.3.5
正在安装 railties 6.0.3.5
使用 sprockets-rails 3.2.2
使用 seed-fu 2.3.9
使用 jquery-rails 4.4.0
使用 lograge 0.11.2
正在获取 rails_failover 0.6.5
使用 rails_multisite 2.5.0
使用 sassc-rails 2.1.2
使用 discourse-ember-rails 0.18.6
正在安装 rails_failover 0.6.5
Bundle 完成!124 个 Gemfile 依赖项,现在已安装 162 个 gems。
未安装 test 和 development 组中的 gems。
Bundled gems 已安装到 `./vendor/bundle`
$ bundle exec rake plugin:pull_compatible_all
discourse-legal-tools 已是最新兼容版本
docker_manager 已是最新兼容版本
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
--------------------------------------------------------------------------------
1 个迁移失败!
迁移 default 失败
#<StandardError: 发生错误,此及之后的所有迁移已取消:
PG::UniqueViolation: ERROR: 重复的键值违反唯一约束 "index_users_on_username"
DETAIL: 键 (username)=(Martina_S) 已存在。
>
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.3.1/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.3.1/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `block (2 levels) in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:90:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:890:in `block in method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:858:in `block in say_with_time'
/usr/local/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:858:in `say_with_time'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:879:in `method_missing'
/var/www/discourse/db/migrate/20210120125607_rename_english_locale.rb:17:in `rename_locale'
/var/www/discourse/db/migrate/20210120125607_rename_english_locale.rb:6:in `up'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:831:in `exec_migration'
/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/usr/local/lib/ruby/2.6.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.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/usr/local/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:811:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:810:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1002:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1361:in `block in ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1361:in `ddl_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1280:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1229:in `block in migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1229:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1061:in `up'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:1036:in `migrate'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.5/lib/active_record/tasks/database_tasks.rb:238: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.6.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'
/var/www/discourse/lib/tasks/db.rake:146:in `block (2 levels) in execute_concurently'
多站点迁移器正在使用 1 个线程运行
正在迁移 default
== 20201117212328 SetCategorySlugToLower: 正在迁移 ===========================
-- remove_index(:categories, {:name=>"unique_index_categories_on_slug"})
-> 0.0069s
-- execute("UPDATE categories SET slug = LOWER(slug)")
-> 0.0196s
-- add_index(:categories, "COALESCE(parent_category_id, -1), LOWER(slug)", {:name=>"unique_index_categories_on_slug", :where=>"slug != ''", :unique=>true})
-> 0.0138s
== 20201117212328 SetCategorySlugToLower: 已迁移 (0.0528s) ==================
== 20201210151635 CreateDoNotDisturbTimings: 正在迁移 ========================
-- create_table(:do_not_disturb_timings)
-> 0.0192s
-- add_index(:do_not_disturb_timings, [:user_id], {:unique=>false})
-> 0.0039s
-- add_index(:do_not_disturb_timings, [:starts_at], {:unique=>false})
-> 0.0029s
-- add_index(:do_not_disturb_timings, [:ends_at], {:unique=>false})
-> 0.0026s
== 20201210151635 CreateDoNotDisturbTimings: 已迁移 (0.0296s) ===============
== 20201218000000 RemoveFlagWebHooks: 正在迁移 ===============================
-- execute("DELETE FROM web_hook_event_types_hooks\nWHERE web_hook_event_type_id = 7\n")
-> 0.0005s
-- execute("DELETE FROM web_hook_event_types\nWHERE id = 7\n")
-> 0.0004s
== 20201218000000 RemoveFlagWebHooks: 已迁移 (0.0016s) ======================
== 20201218000001 RemoveQueuedPostWebHooks: 正在迁移 =========================
-- execute("DELETE FROM web_hook_event_types_hooks\nWHERE web_hook_event_type_id = 8\n")
-> 0.0002s
-- execute("DELETE FROM web_hook_event_types\nWHERE id = 8\n")
-> 0.0002s
== 20201218000001 RemoveQueuedPostWebHooks: 已迁移 (0.0011s) ================
== 20201229031635 AddUserProfileIndexes: 正在迁移 ============================
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS index_topic_links_on_user_and_clicks\nON topic_links(user_id, clicks DESC, created_at DESC)\nWHERE (NOT reflection and NOT quote and NOT internal)\n")
-> 0.2598s
-- execute("CREATE INDEX CONCURRENTLY IF NOT EXISTS index_posts_user_and_likes\nON posts(user_id, like_count desc, created_at desc)\nWHERE post_number > 1\n")
-> 0.7620s
== 20201229031635 AddUserProfileIndexes: 已迁移 (1.0231s) ===================
== 20210105165605 AddProcessedToNotifications: 正在迁移 ======================
== 20210105165605 AddProcessedToNotifications: 已迁移 (0.0007s) =============
== 20210106181418 CreateUserNotificationSchedules: 正在迁移 ==================
-- create_table(:user_notification_schedules)
-> 0.0043s
-- add_index(:user_notification_schedules, [:user_id])
-> 0.0027s
-- add_index(:user_notification_schedules, [:enabled])
-> 0.0024s
-- add_column(:do_not_disturb_timings, :scheduled, :boolean, {:default=>false})
-> 0.0008s
-- add_index(:do_not_disturb_timings, [:scheduled])
-> 0.0024s
== 20210106181418 CreateUserNotificationSchedules: 已迁移 (0.0134s) =========
== 20210107005832 AddImapMissingColumnToIncomingEmail: 正在迁移 ==============
-- add_column(:incoming_emails, :imap_missing, :boolean, {:default=>false, :null=>false})
-> 0.0013s
== 20210107005832 AddImapMissingColumnToIncomingEmail: 已迁移 (0.0019s) =====
== 20210111025920 AddRejectReasonToReviewables: 正在迁移 =====================
-- add_column(:reviewables, :reject_reason, :text)
-> 0.0008s
== 20210111025920 AddRejectReasonToReviewables: 已迁移 (0.0015s) ============
== 20210119005647 AddCreatedViaToIncomingEmail: 正在迁移 =====================
-- add_column(:incoming_emails, :created_via, :integer, {:null=>true})
-> 0.0006s
== 20210119005647 AddCreatedViaToIncomingEmail: 已迁移 (0.0012s) ============
== 20210120125607 RenameEnglishLocale: 正在迁移 ==============================
-- execute("UPDATE users\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0107s
-- execute("UPDATE site_settings\nSET value = 'en_GB'\nWHERE name = 'default_locale' AND value = 'en'\n")
-> 0.0007s
-- execute("UPDATE translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0004s
-- execute("UPDATE theme_translation_overrides\nSET locale = 'en_GB'\nWHERE locale = 'en'\n")
-> 0.0005s
-- execute("UPDATE users\nSET locale = 'en'\nWHERE locale = 'en_US'\n")
Docker Manager:升级失败
#<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.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/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.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
bin/rails:17:in `<main>'
正在启动最初停止的 3 个 Unicorn 工作进程
随后我通过 SSH 运行了更新,希望这样会更稳定(在 2020 年有几个月,Web 界面拒绝更新任何内容,我总是必须通过 SSH 进行操作)。当我在命令行中输入更新命令时,它下载了很多东西,并最终告诉我运行 rebuild app 命令。当我这样做时,发生了相同的错误。我无法确认周围的行是否相同,我也没有复制它们,但它确实在数据库迁移的中间出现了这个 index_username_on_users 问题。
TL;DR:如果我正确解读了输出,问题发生在 RenameEnglishLocale 迁移的 execute("UPDATE users SET locale = 'en' WHERE locale = 'en_US'") 命令上。
sam
(Sam Saffron)
5
我之前遇到过这个错误,它通常发生在用户表出现内部损坏时。
不知何故,表中存在重复的"user"记录,这可能是早期版本、升级过程或异常关闭时悄然引入的。我尚不清楚具体原因,但确实见过这种情况。
你有两种选择:
-
如果运气好,可以依次执行 ./launcher start app、rails c,然后运行 DB.query('select * from users where username='Martina_S'),最后将最后一个 Martina_S 重命名为类似 Martina_S1 的名称。
-
如果运气不好,你将无法启动应用,此时需要启动数据容器,并通过 psql 执行上述操作。
Judith
(Judith Meyer)
6
感谢您的快速回复!如何启动数据容器? 我尝试了 ./launcher start app 然后运行 rails c,但 Rails 无法启动,因为数据库未运行。我尝试执行 /etc/init.d/postgresql restart,却得到了您在初始帖子中看到的错误,提示 PostgreSQL 版本不兼容(Debian LTS 仅支持 12.x,而最新的 Discourse 升级似乎已将我的数据迁移到了 13.0??)。我完全可以用 SQL 来修复这个问题,毕竟我是一名 Rails 开发者,但我完全不知道如何在 Linux 命令行上修复这个看起来像是 PostgreSQL 更新失败的问题。
sam
(Sam Saffron)
7
请在 sample 目录中查看示例数据容器。
你只需将其指向正确的位置,然后就能进入容器并运行 psql。
是的,你已经升级到 13 版本了。