# Falha na atualização em db\_migrate

**URL:** <https://meta.discourse.org/t/update-failed-on-db-migrate/279381>\
**Category:** Self-hosting\
**Created:** [18 Setembro , 2023 12:30 UTC](https://meta.discourse.org/t/update-failed-on-db-migrate/279381 "2023-09-18T12:30:33Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![adopilot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/adopilot/32/105040_2.png) [@adopilot](https://meta.discourse.org/u/adopilot)\
**Post date:** [18 Setembro , 2023 12:30 UTC](https://meta.discourse.org/t/update-failed-on-db-migrate/279381/1 "2023-09-18T12:30:33Z")

</div>

Estou tentando atualizar minha instância do Discourse de 2.9.0.beta10 para 3.2.0.beta1.  
Estou recebendo um erro como este:

```plaintext
Tasks: TOP => db:migrate
(Veja o rastreamento completo executando a tarefa com --trace)
I, [2023-09-15T02:32:08.512373 #1] INFO -- : Compiled js-processor: tmp/js-processor.js
== 20230118020114 AddPublicTopicCountToTags: migrating ========================
-- add_column(:tags, :public_topic_count, :integer, {:default=>0, :null=>false})
   => 0.0021s
-- execute("UPDATE tags t\nSET public_topic_count = x.topic_count\nFROM (\n SELECT\n COUNT(topics.id) AS topic_count,\n tags.id AS tag_id\n FROM tags\n INNER JOIN topic_tags ON tags.id = topic_tags.tag_id\n INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'\n INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted\n GROUP BY tags.id\n) x\nWHERE x.tag_id = t.id\nAND x.topic_count <> t.public_topic_count;\n")

I, [2023-09-15T02:32:08.512848 #1] INFO -- : Terminating async processes
I, [2023-09-15T02:32:08.512929 #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, [2023-09-15T02:32:08.513001 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (2023-09-15 02:32:08.513 UTC [42] LOG: received fast shutdown request
1694745128) Received SIGTERM scheduling shutdown...
2023-09-15 02:32:08.522 UTC [42] LOG: aborting any active transactions
2023-09-15 02:32:08.524 UTC [42] LOG: background worker \"logical replication launcher\" (PID 51) exited with exit code 1
2023-09-15 02:32:08.526 UTC [46] LOG: shutting down
111:M 15 Sep 2023 02:32:08.532 # User requested shutdown...
111:M 15 Sep 2023 02:32:08.532 * Saving the final RDB snapshot before exiting.
2023-09-15 02:32:08.768 UTC [42] LOG: database system is shut down
111:M 15 Sep 2023 02:32:11.475 * DB saved on disk
111:M 15 Sep 2023 02:32:11.475 # Redis is now ready to exit, bye bye...

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 787 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.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'"]}

```

## Alguma ideia do que está errado? Eu já atualizei minha instância anteriormente sem erros. O Discourse Doctor não me deu nenhuma pista para procurar.

A mensagem acima se refere a esta instrução SQL?

```sql
UPDATE tags t
SET public_topic_count = x.topic_count
FROM (
	SELECT COUNT(topics.id) AS topic_count,    
	tags.id AS tag_id
	FROM tags
	INNER JOIN topic_tags ON tags.id = topic_tags.tag_id
	INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'
	INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted
	GROUP BY tags.id
) x
	WHERE x.tag_id = t.id
	AND x.topic_count <> t.public_topic_count;

```

Porque se eu executar apenas o código `SELECT` no banco de dados diretamente, não recebo erros.  
Vejo que o trabalho `db:migrate` primeiro adiciona a coluna com  
` add_column(:tags, :public_topic_count, :integer, {:default=>0, :null=>false})`  
Não sei por que falha na consulta acima então?

---

_[View the full topic](https://meta.discourse.org/t/update-failed-on-db-migrate/279381)._
