Importazione del vecchio database alla versione più recente

D: Se si dispone di un vecchio DB di installazione di Discourse, v2.0 > esportazione - importazione > 2.9 - fallirà o esiste un processo di conversione integrato nell’importazione per consentire un’importazione corretta?

A: Aggiornamento PostgreSQL 13

Ah grazie, sembra funzionare, tranne che ora fallisce il bootstrap alla ricostruzione dell’app.

Sembra esserci un errore “discourse database already exists: type error” e anche un errore ruby/gems nell’avviso di bootstrap.

Ho letto alcuni degli errori.

Come contesto, questa build 2.2b4 (PG10) è l’impostazione e la build di importazione originale utilizzata per importare da un’altra piattaforma di forum “old school” - questa non ha avuto aggiornamenti o modifiche da quando, per quanto ne so.

La mia impressione è che la soluzione possa essere quella di commentare alcune righe da qualche parte utilizzate solo per la migrazione/importazione originale - Dove si trovano normalmente tali personalizzazioni per una build?

Nota: ho già rimosso o commentato - plugin, lets’ encrypt e le righe della versione 2.2b4 da app.yml.

Dovresti includere il tuo file per un aiuto reale. Se vedi cose come

  apt get

O qualcosa sulla modifica di Gemfile, sarebbero cose da rimuovere.

Quello che probabilmente farei = dato che l’aggiornamento del database ha funzionato) è rinominare il tuo app.yml ed eseguire discourse-setup (supponendo che il tuo file attuale abbia i suoi dati in shared/standalone. Potresti semplicemente confrontare il tuo file con samples/standalone.yml.

Fantastico, grazie per i suggerimenti. Proverò con rm app.yml e vedrò cosa succede.

Quando dici file, intendi errori nel terminal o in app.yml o in un file diverso?

Informazioni aggiuntive: sto avviando un droplet per imparare e capire, in modo da comprendere meglio come mantenere con il bonus di una tranquillità nel cestinare. Cioè, non ho eseguito questo su/e cestinato un forum live :wink:

Quando mi sono allontanato ieri, mi è venuto in mente che dovrei ovviamente controllare le istruzioni dell’importatore e capire come è configurato e vedere se ci sono residui, ma il tuo suggerimento riguardo a app.yml probabilmente aggira tali imprevisti. :sweat_smile:

Ok, ho provato tutto: ho avviato un nuovo droplet,

  • :white_check_mark: aggiornamenti OS/Docker
  • :white_check_mark: container arrestato
  • :white_check_mark: rimosso app.yml
  • :white_check_mark: discourse-setup = aggiornamento PG10
  • :cross_mark: rebuild FALLITO (sembra identico ai messaggi di errore di ieri.)

Gli errori che riesco a vedere:

1) ERRORE: il database “discourse” esiste già

2022-05-20 10:35:29.889 UTC [42] LOG: il sistema di database è pronto ad accettare connessioni
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 ERRORE: il database “discourse” esiste già
2022-05-20 10:35:34.839 UTC [55] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: errore: creazione del database fallita: ERRORE: il database “discourse” esiste già

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 ERRORE: valore di chiave duplicato viola il vincolo univoco **"index_poll_options_on_poll_id_and_digest"**

2022-05-20 10:29:58.275 UTC [664] discourse@discourse DETTAGLIO: Chiave (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) esiste già.

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 interrotto!

StandardError: Si è verificato un errore, questa e tutte le successive migrazioni sono state annullate:

ERRORE: valore di chiave duplicato viola il vincolo univoco "index_poll_options_on_poll_id_and_digest"

DETTAGLIO: Chiave (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) esiste già.

/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>'

Causa:

PG::UniqueViolation: ERRORE: valore di chiave duplicato viola il vincolo univoco "index_poll_options_on_poll_id_and_digest"

DETTAGLIO: Chiave (poll_id, digest)=(163, 84b9c1be0d88b6592595e6e16827dbc1) esiste già.

/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

(Vedi traccia completa eseguendo il task con --trace)

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

-- 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: migrato (0.0376s) =======================

Fine

I, [2022-05-20T10:29:58.308710 #1] INFO – : Terminazione dei processi asincroni

I, [2022-05-20T10:29:58.308759 #1] INFO – : Invio di INT a 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 – : Invio di TERM a 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: richiesta di arresto rapido ricevuta

103:signal-handler (1653042598) SIGTERM ricevuto, programmazione dell’arresto…

103:M 20 May 2022 10:29:58.310 # Arresto richiesto dall’utente…

103:M 20 May 2022 10:29:58.310 * Salvataggio dell’ultimo snapshot RDB prima dell’uscita.

2022-05-20 10:29:58.310 UTC [42] LOG: annullamento di eventuali transazioni attive

2022-05-20 10:29:58.312 UTC [42] LOG: worker di background “logical replication launcher” (PID 51) uscito con codice di uscita 1

2022-05-20 10:29:58.312 UTC [46] LOG: arresto in corso

2022-05-20 10:29:58.392 UTC [42] LOG: sistema di database arrestato

103:M 20 May 2022 10:29:58.601 * DB salvato su disco

103:M 20 May 2022 10:29:58.602 # Redis è ora pronto ad uscire, arrivederci…

FALLITO


Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ fallito con codice di ritorno #<Process::Status: pid 650 exit 1>

Posizione dell’errore: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’

esecuzione fallita con i parametri {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}

bootstrap fallito con codice di uscita 1

**** FALLITO IL BOOTSTRAP ** scorri verso l’alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.**

./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Ho eseguito discourse-doctor molte volte, incluso questa volta, ma non ha rilevato nulla di visibile per me

In tal caso, esegui una nuova installazione, esegui il backup del vecchio sito e ripristinalo sul nuovo sito.

Ah ah, quello era un po’ il mio gioco di parole.

Se è così semplice, allora tutti i miei problemi sono risolti.

Vedi, la mia preoccupazione era che avrei esportato da PG10 in un nuovissimo 2.9 che è PG13, non è così, e quindi risucchierà il database - la mia ipotesi sarebbe di no.

Quindi, in uno scenario di backup e ripristino, in questo contesto: l’esportazione/importazione di amministrazione è sufficiente senza prima aggiornare il vecchio database come stavo cercando di fare?

Sì, lo è, ma potresti dover correggere un problema con il tuo attuale DB prima di poterlo ripristinare su 2.9.

Ecco una soluzione che potrebbe funzionare, ma dovrai usare %84b9c1be0d88b6592595e6e16827dbc1% come value perché quello è l’ID del sondaggio che sta causando problemi nel tuo caso.

Sembra quindi che tu abbia un indice corrotto? (Non me ne sono accorto, ma è quello che suggerisce l’ultima risposta).

Se è così, puoi cercare alcuni esempi. Per lo più, provi a reindicizzare e vedi quali indici non si ricostruiscono, quindi elimini (o correggi se sei intelligente) i record errati.

Grazie per questo, sembrava promettente, ma si è bloccato su un nuovo ID sondaggio + VALORE dopo aver applicato alcuni di questi passaggi correttivi.

Sebbene questo possa essere il problema e possa essere la soluzione, penso che tutti i sondaggi causeranno un arresto o troppi, non semplicemente uno, e baso anche questo sull’affermazione di Falco nell’altro thread:

Quello non è un indice corrotto.

Tra la versione 2.1 e 2.5 abbiamo spostato i sondaggi da PluginStore a tabelle appropriate. Uno dei motivi dello spostamento è avere coerenza dei dati, che è esattamente il problema che hai.

Hai un valore duplicato nella tabella poll_options. Puoi andare lì ed eliminare le voci duplicate?

È necessaria un’indagine più approfondita.

Ciao a tutti,

Sono nella stessa situazione di @agemo, ricevo esattamente lo stesso errore e sono pratico nel manipolare direttamente il database.

Ecco cosa non capisco. La soluzione suggerita è semplicemente eliminare i sondaggi con ID duplicati nella colonna dei valori, ma quando ho controllato la mia tabella, ho scoperto che tutte quelle voci duplicate fanno riferimento a diversi post_id, appartengono quindi a post diversi e hanno anche metadati diversi, come il numero di voti e altro ancora.

Qualcuno può spiegarmi la struttura vecchia contro la nuova struttura in modo che io possa capire questo errore. Per me, eliminare i sondaggi non risolve il problema poiché in realtà elimino i dati degli utenti.

Grazie!

Mi sembra che si tratti di un indice danneggiato. Puoi reindicizzare quella tabella?

O forse è il caso che qualcosa sia cambiato e sia necessaria una migrazione più complessa. O la migrazione è in qualche modo danneggiata.

Ciao @pfaffman, lieto di rivederti. Ho già utilizzato il tuo servizio per un sito diverso.

  1. Posso assolutamente ricostruire l’indice su questa tabella, ma come aiuterà con dati non univoci? Puoi spiegare perché è sempre il tuo punto di partenza? (l’ho notato nelle tue risposte)

  2. La migrazione è stata eseguita con la versione 2.2b4, quella in cui l’importazione dei sondaggi funzionava effettivamente.

  3. Ho capito correttamente che nella vecchia tabella post_custom_fields il valore ->poll->options->id si riferisce in realtà al digest e non all’ID effettivo del sondaggio?

  4. Cos’è comunque il digest di un sondaggio?

Grazie per la tua risposta, ma rimuovere semplicemente i sondaggi non è una soluzione per i record duplicati. Presumo che da qualche parte all’inizio l’importazione da phpbb3 sia stata errata e abbia creato quei record. Sono validi, hanno solo UUID duplicati poiché l’importazione originale non ha controllato questo aspetto.

Comunque, la soluzione per chiunque si imbatta in questo problema è fare quanto segue:

  1. Modifica i record problematici nella tabella post_custom_fields per spostarli. È meglio farlo in questo modo piuttosto che aspettare qualche minuto per la ricostruzione solo per vedere un altro errore.

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. Esegui la ricostruzione dell’app, l’aggiornamento o qualsiasi altra cosa l’utente stia cercando di fare.

  2. Connettiti al container live in esecuzione dopo che tutto è stato compilato e avviato.

  3. Ripristina i nomi originali dei sondaggi:

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. Esegui la migrazione che causa il problema manualmente dall’interno del container dell’app, nota che VERSION è il numero nel nome del file della migrazione

prima annulla la migrazione, questo non farà nulla poiché il metodo down non fa nulla al database:

rake db:migrate:down VERSION=20180820080623

esegui la migrazione e cerca il primo errore:

rake db:migrate:up VERSION=20180820080623

  1. Cerca nella tabella usando una GUI del database per un editing più semplice l’UUID che causa il problema:

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

  1. Ora la parte difficile. L’UUID è l’identificatore della risposta/opzione del sondaggio, quindi quello che devi fare è cambiare quell’UUID sulla riga poll diciamo da 731ef6901e968fc3f4e785fcb9e9abe8 a 731ef6901e968fc3f4e785fcb9e9abe9 è molto improbabile che tu ne trovi un altro come questo nel tuo sistema. Ma dopo averlo fatto, devi anche trovare quello corrispondente in poll-votes e cambiarlo con il tuo nuovo. In questo modo non perderai voti o risposte.

  2. Esegui nuovamente la migrazione e cerca il prossimo errore:

rake db:migrate:up VERSION=20180820080623

  1. Ripeti questo processo finché la migrazione non viene completata e hai migrato tutti i sondaggi nelle tue nuove tabelle.

Sono deluso dal fatto che nessuno si sia nemmeno preoccupato di rispondere e spiegare cos’è quell’UUID e a cosa si riferisce. So che è open source e so che sono passati anni da quando è stato committato, non mi lamento, ma un qualche tipo di assistenza da parte delle persone che effettivamente fanno commit sul repository ufficiale sarebbe molto apprezzata.

Il problema è stato risolto, quindi felici giorni.

Grazie!

Bel lavoro. :sunglasses: