Importieren alter Datenbank in die neueste Version

F: Wenn Sie eine alte DB von einer Discourse-Installation, v2.0, exportieren und importieren, wird sie dann fehlschlagen oder gibt es einen Konvertierungsprozess, der in den Import integriert ist, um einen erfolgreichen Import zu ermöglichen?

A: PostgreSQL 13 Update

2 „Gefällt mir“

Ah danke, das scheint zu funktionieren, außer dass die App jetzt beim Neuerstellen nicht mehr startet.
Es scheint dort auch einen Fehler “discourse database already exists: type error” sowie eine Ruby/Gems-Fehlermeldung bei der Bootstrap-Warnung zu geben.

Ich habe einige der Fehler durchgelesen.

Zur Information: Dieser Build 2.2b4 (PG10) ist das ursprüngliche Import-Setup und der Build, der zum Import von einer anderen alten Forenplattform verwendet wurde – soweit ich weiß, wurden seitdem keine Updates oder Änderungen vorgenommen.

Ich habe den Eindruck, dass die Lösung darin bestehen könnte, einige Zeilen auszukommentieren, die nur für die ursprüngliche Migration/den Import verwendet wurden – Wo würden Sie normalerweise solche Anpassungen für einen Build finden?

Hinweis: Ich habe bereits Plugins, Let’s Encrypt und die Zeilen der Version 2.2b4 aus der app.yml entfernt oder auskommentiert.

Sie müssten Ihre Datei für wirkliche Hilfe angeben. Wenn Sie Dinge wie

  apt get

oder etwas über die Änderung von Gemfile sehen, wären das Dinge, die entfernt werden müssten.

Was ich wahrscheinlich tun würde (vorausgesetzt, das Datenbank-Upgrade hat funktioniert) ist, Ihre app.yml umzubenennen und discourse-setup auszuführen (vorausgesetzt, Ihre aktuelle Datei hat ihre Daten in shared/standalone. Sie könnten Ihre Datei einfach mit samples/standalone.yml vergleichen.

1 „Gefällt mir“

Danke für die Hinweise. Ich werde rm app.yml ausprobieren und sehen, was passiert.

Wenn Sie von Datei sprechen, meinen Sie Fehler im Terminal oder in app.yml oder eine andere Datei?

Zusätzliche Informationen: Ich richte einen Droplet zum Lernen ein und versuche, es selbst herauszufinden, damit ich besser verstehe, wie man es pflegt, mit dem zusätzlichen Vorteil, dass ich es ohne Bedenken löschen kann. Das heißt, ich habe dies nicht auf einem Live-Forum ausgeführt/gelöscht :wink:

Als ich gestern weggegangen bin, fiel mir ein, dass ich offensichtlich die Anweisungen des Importeurs überprüfen und verstehen sollte, wie dieser eingerichtet ist und ob es Rückstände gibt, aber Ihr Vorschlag bezüglich app.yml umgeht wahrscheinlich solche Stolpersteine. :sweat_smile:

Ok, tried all that - spun up new droplet,

  • :white_check_mark: updates OS/Docker
  • :white_check_mark: stopped container
  • :white_check_mark: rm app.yml
  • :white_check_mark: discourse-setup = upgraded PG10
  • :x: rebuild FAILED bootstrap (looks identical to yesterday’s error messages.)

The errors that I can see:

1) ERROR: database “discourse” already exists

2022-05-20 10:35:29.889 UTC [42] LOG: database system is ready to accept connections
I, [2022-05-20T10:35:34.789986 #1] INFO – :
I, [2022-05-20T10:35:34.790259 #1] INFO – : > su postgres -c ‘createdb discourse’ || true
2022-05-20 10:35:34.839 UTC [55] postgres@postgres ERROR: database “discourse” already exists
2022-05-20 10:35:34.839 UTC [55] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database “discourse” already exists

2) “index_poll_options_on_poll_id_and_digest”

I, [2022-05-20T10:29:54.464874 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

2022-05-20 10:29:58.275 UTC [664] discourse@discourse ERROR: duplicate key value violates unique constraint **"index_poll_options_on_poll_id_and_digest"**

2022-05-20 10:29:58.275 UTC [664] discourse@discourse DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.

2022-05-20 10:29:58.275 UTC [664] discourse@discourse STATEMENT: INSERT INTO poll_options

(poll_id, digest, html, anonymous_votes, created_at, updated_at)

VALUES

(163, 'e8b71c653ce9b67fbfdeb23956415a45', '&lt;2%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '19aab1c9ed0e7bf7aff0dc154f3f349a', '3%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'ba429f197b4f9f3ce89f4e1fb2e8b009', '4%', 1, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '30eb71c6082b75ca751c3d4e94aa386c', '5%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '7575912ab29a386e8f6797e280aca664', '6%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '17950b1d5d660a2e8a078640be0def0a', '7%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '1c4e675eb7d2d561f16d1afce8330816', '8%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'a891f2abb4531189affefe9896df814e', '9%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, 'd7d8f9a60fc4dc25f2e6a986b12e5176', '10%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '3d5e680f80b95ddbf99490991327349a', '11%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '84b9c1be0d88b6592595e6e16827dbc1', '12%', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC'),(163, '84b9c1be0d88b6592595e6e16827dbc1', '<blockquote>

<p>12%</p>

</blockquote>', 0, '2019-03-16 12:37:50 UTC', '2019-03-16 12:37:50 UTC')

RETURNING digest, id

rake aborted!

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

ERROR: duplicate key value violates unique constraint "index_poll_options_on_poll_id_and_digest"

DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:209:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/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-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:64:in `query_single'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:131:in `block (2 levels) in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `block in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `public_send'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'

/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-7.0.3/lib/active_record/migration.rb:854:in `block (2 levels) in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:853:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:852:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1046:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1360:in `block in execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/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-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/transactions.rb:209:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1411:in `ddl_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1359:in `execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `each'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `migrate_without_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1432:in `block in with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1447:in `with_advisory_lock_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1428:in `with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1117:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1092:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/tasks/database_tasks.rb:262:in `migrate'

/var/www/discourse/lib/tasks/db.rake:227:in `block (2 levels) in <main>'

/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'

/var/www/discourse/lib/tasks/db.rake:210:in `block in <main>'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

Caused by:

PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_poll_options_on_poll_id_and_digest"

DETAIL: Key (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) already exists.

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:209:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/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-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mini_sql-1.4.0/lib/mini_sql/postgres/connection.rb:64:in `query_single'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:131:in `block (2 levels) in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:87:in `block in up'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `each'

/var/www/discourse/plugins/poll/db/migrate/20180820080623_migrate_polls_data.rb:64:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `public_send'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:873:in `exec_migration'

/var/www/discourse/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'

/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-7.0.3/lib/active_record/migration.rb:854:in `block (2 levels) in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:853:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:852:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1046:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1360:in `block in execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/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-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/transactions.rb:209:in `transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1411:in `ddl_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1359:in `execute_migration_in_transaction'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `each'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1333:in `migrate_without_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `block in migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1432:in `block in with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1447:in `with_advisory_lock_connection'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1428:in `with_advisory_lock'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1282:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1117:in `up'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/migration.rb:1092:in `migrate'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3/lib/active_record/tasks/database_tasks.rb:262:in `migrate'

/var/www/discourse/lib/tasks/db.rake:227:in `block (2 levels) in <main>'

/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'

/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'

/var/www/discourse/lib/tasks/db.rake:210:in `block in <main>'

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

Tasks: TOP => db:migrate

(See full trace by running task with --trace)

I, [2022-05-20T10:29:58.305849 #1] INFO -- : == 20180820073549 CreatePollsTables: migrating ================================

-- create_table(:polls, {})

-> 0.0172s

-- add_index(:polls, [:post_id, :name], {:unique=>true})

-> 0.0016s

-- create_table(:poll_options, {})

-> 0.0064s

-- add_index(:poll_options, [:poll_id, :digest], {:unique=>true})

-> 0.0018s

-- create_table(:poll_votes, {:id=>false})

-> 0.0067s

-- add_index(:poll_votes, [:poll_id, :poll_option_id, :user_id], {:unique=>true})

-> 0.0013s

== 20180820073549 CreatePollsTables: migrated (0.0376s) =======================

End

I, [2022-05-20T10:29:58.308710 #1] INFO – : Terminating async processes

I, [2022-05-20T10:29:58.308759 #1] INFO – : Sending INT to 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 pid: 42

I, [2022-05-20T10:29:58.308837 #1] INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103

2022-05-20 10:29:58.308 UTC [42] LOG: received fast shutdown request

103:signal-handler (1653042598) Received SIGTERM scheduling shutdown…

103:M 20 May 2022 10:29:58.310 # User requested shutdown…

103:M 20 May 2022 10:29:58.310 * Saving the final RDB snapshot before exiting.

2022-05-20 10:29:58.310 UTC [42] LOG: aborting any active transactions

2022-05-20 10:29:58.312 UTC [42] LOG: background worker “logical replication launcher” (PID 51) exited with exit code 1

2022-05-20 10:29:58.312 UTC [46] LOG: shutting down

2022-05-20 10:29:58.392 UTC [42] LOG: database system is shut down

103:M 20 May 2022 10:29:58.601 * DB saved on disk

103:M 20 May 2022 10:29:58.602 # Redis is now ready to exit, bye bye…

FAILED


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

Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’

exec failed with the params {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}

bootstrap failed with exit code 1

**** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.**

./discourse-doctor may help diagnose the problem.

I’ve run discourse doc many times including this time and it didn’t turn up anything I could see

In diesem Fall führen Sie einfach eine Neuinstallation durch, sichern Sie die alte Website und stellen Sie sie auf der neuen Website wieder her.

Ha ha, das war irgendwie meine OP-Ausrichtung.

Wenn es so einfach ist, dann sind all meine Probleme gelöst.

Sehen Sie, meine Sorge war, dass ich von PG10 in das brandneue 2.9 exportieren würde, das PG13 ist, nicht wahr, und wird es die Datenbank aufnehmen – meine Annahme wäre nein.

Somit ist im Kontext eines Backup- und Wiederherstellungsszenarios der Admin-Export/Import ausreichend, ohne zuerst die ältere Datenbank zu aktualisieren, wie ich es versucht habe?

Ja, das ist er, aber Sie müssen möglicherweise ein Problem mit Ihrer aktuellen DB beheben, bevor Sie sie auf 2.9 wiederherstellen können.

Hier ist eine Lösung, die funktionieren könnte, aber Sie müssen %84b9c1be0d88b6592595e6e16827dbc1% als value verwenden, da dies die Umfrage-ID ist, die in Ihrem Fall Probleme verursacht.

1 „Gefällt mir“

Es klingt also, als hätten Sie einen beschädigten Index? (Ich habe es nicht bemerkt, aber das deutet die letzte Antwort an).

Wenn das der Fall ist, können Sie sich einige Beispiele ansehen. Meistens versuchen Sie, den Index neu zu erstellen und zu sehen, welche Indizes nicht neu erstellt werden können, und löschen dann die fehlerhaften Datensätze (oder beheben sie, wenn Sie clever sind).

Danke dafür, es sah vielversprechend aus, aber es blieb bei einer neuen Umfrage-ID + WERT hängen, nachdem einige dieser Abhilfemaßnahmen angewendet wurden.

Während dies das Problem und die Lösung sein mag – ich denke, alle Umfragen werden einen Stopp verursachen oder zu viele, nicht nur eine, und ich basiere das auch auf Falcos Aussage im anderen Thread:

Das ist kein beschädigter Index.

Zwischen 2.1 und 2.5 haben wir Umfragen von PluginStore in richtige Tabellen verschoben. Einer der Gründe für die Verschiebung ist die Datenkonsistenz, was genau das Problem ist, das Sie haben.

Sie haben einen doppelten Wert in der Tabelle poll_options. Können Sie dort hingehen und die doppelten Einträge löschen?

Eine genauere Untersuchung ist erforderlich.

1 „Gefällt mir“

Hallo zusammen,

Ich bin im selben Boot wie @agemo, ich bekomme genau denselben Fehler und bin geschickt darin, direkt mit der Datenbank zu hantieren.

Hier ist, was ich nicht verstehe. Die vorgeschlagene Lösung ist, einfach die Pools von doppelten IDs in der Wertspalte zu löschen, aber als ich meine Tabelle überprüfte, stellte sich heraus, dass diese doppelten Einträge alle auf unterschiedliche post_id verweisen, also zu unterschiedlichen Beiträgen gehören und auch unterschiedliche Metadaten wie die Anzahl der Stimmen usw. haben.

Kann mir jemand die alte Struktur im Vergleich zur neuen Struktur erklären, damit ich diesen Fehler verstehen kann. Für mich löscht das Löschen von Umfragen das Problem nicht, da ich tatsächlich Benutzerdaten lösche.

Danke!

1 „Gefällt mir“

Für mich klingt das nach einem defekten Index. Können Sie diese Tabelle neu indizieren?

Oder vielleicht hat sich etwas geändert und eine komplexere Migration ist erforderlich. Oder die Migration ist irgendwie fehlerhaft.

Hallo @pfaffman, schön, Sie wiederzusehen. Ich habe Ihren Service bereits für eine andere Website genutzt.

  1. Ich kann den Index für diese Tabelle definitiv neu aufbauen, aber wie hilft das bei nicht eindeutigen Daten? Können Sie erläutern, warum Sie immer damit beginnen? (Ich habe das gerade in Ihren Antworten bemerkt)

  2. Die Migration wurde mit Version 2.2b4 durchgeführt, das war die Version, bei der der Import von Umfragen tatsächlich funktionierte.

  3. Verstehe ich richtig, dass sich in der alten Tabelle post_custom_fields der Wert ->poll->options->id auf den Digest und nicht auf die tatsächliche Umfrage-ID bezieht?

  4. Was ist überhaupt ein Umfrage-Digest?

1 „Gefällt mir“

Vielen Dank für Ihre Antwort, aber das einfache Entfernen von Umfragen ist keine Lösung für doppelte Datensätze. Ich gehe davon aus, dass der Import von phpbb3 irgendwo am Anfang fehlerhaft war und diese Datensätze erstellt hat. Sie sind gültig, sie haben nur doppelte UUIDs, da der ursprüngliche Import dies nicht überprüft hat.

Wie auch immer, die Lösung für jeden, der auf dieses Problem stößt, ist Folgendes zu tun:

  1. Ändern Sie problematische Datensätze in der Tabelle post_custom_fields, um sie aus dem Weg zu räumen. Es ist besser, dies so zu tun, als auf den Wiederaufbau zu warten, der nur wenige Minuten dauert, nur um dann einen weiteren Fehler zu sehen.

update post_custom_fields set name = 'polls' where name = 'polls_bak';
update post_custom_fields set name = 'polls-votes' where name = 'polls-votes_bak';

  1. Führen Sie den Wiederaufbau der Anwendung, das Update oder was auch immer der Benutzer zu tun versucht, aus.

  2. Verbinden Sie sich mit dem live laufenden Container, nachdem alles aufgebaut und gestartet ist.

  3. Ändern Sie die Umfragen zurück zur ursprünglichen Benennung:

update post_custom_fields set name = 'polls'_bak' where name = 'polls';
update post_custom_fields set name = 'polls-votes_bak'' where name = 'polls-votes';

  1. Führen Sie die Migration, die das Problem verursacht, manuell innerhalb des App-Containers aus. Beachten Sie, dass VERSION die Nummer im Dateinamen der Migration ist.

Entfernen Sie zuerst die Migration, dies tut nichts, da die Down-Methode nichts an der Datenbank ändert:

rake db:migrate:down VERSION=20180820080623

Führen Sie die Migration aus und suchen Sie nach dem ersten Fehler:

rake db:migrate:up VERSION=20180820080623

  1. Suchen Sie in der Tabelle mit einer Datenbank-GUI zur einfacheren Bearbeitung nach der UUID, die das Problem verursacht:

select from post_custom_fields where value like '%your_UUID%';

  1. Nun der knifflige Teil. Die UUID ist der Bezeichner der Umfrageantwort/Option. Was Sie tun müssen, ist, diese UUID in der Zeile poll zu ändern, sagen wir von 731ef6901e968fc3f4e785fcb9e9abe8 zu 731ef6901e968fc3f4e785fcb9e9abe9. Es ist höchst unwahrscheinlich, dass Sie eine andere wie diese in Ihrem System finden werden. Aber nachdem Sie dies getan haben, müssen Sie auch die entsprechende in poll-votes finden und sie zu Ihrer neuen ändern. Auf diese Weise verlieren Sie keine Stimmen oder Antworten.

  2. Führen Sie die Migration erneut aus und suchen Sie nach dem nächsten Fehler:

rake db:migrate:up VERSION=20180820080623

  1. Wiederholen Sie diesen Vorgang, bis die Migration abgeschlossen ist und alle Umfragen in Ihre neuen Tabellen migriert wurden.

Ich bin enttäuscht, dass sich niemand die Mühe gemacht hat, zu antworten und zu erklären, was diese UUID ist und worauf sie sich bezieht. Ich weiß, es ist Open Source und ich weiß, es ist Jahre her, seit es committet wurde, ich beschwere mich nicht, aber eine gewisse Hilfe von Leuten, die tatsächlich Commits im offiziellen Repo machen, wäre sehr willkommen.

Das Problem wurde gelöst, also frohe Tage.

Danke!

3 „Gefällt mir“

Gute Arbeit da. :sunglasses:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.