# Восстановление после неудачного или частично применённого обновления

**URL:** https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924
**Category:** Self-hosting
**Created:** [24.Март.2022 21:25:17 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924 "2022-03-24T21:25:17Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![luxaritas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luxaritas/32/254171_2.png) [@luxaritas](https://meta.discourse.org/u/luxaritas)
#### Post date: [24.Март.2022 21:25:17 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/1 "2022-03-24T21:25:17Z")

</div>

Я попытался обновить свой экземпляр Discourse, но из-за нескольких проблем, похоже, это завершилось неудачей в частично применённом состоянии. При запуске `./launcher rebuild app` я получаю следующее сообщение об ошибке, которое, на мой взгляд, указывает на миграцию, которая уже была (частично) применена:

```plaintext
I, [2022-03-24T21:13:16.043071 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: Произошла ошибка, и эта и все последующие миграции отменены:

PG::DuplicateColumn: ERROR: столбец "bookmarkable_id" отношения "bookmarks" уже существует

```

Буду признателен за любые рекомендации: есть ли способ восстановиться после этого (или мне нужно решиться и выполнить чистую установку)? Спасибо!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24.Март.2022 21:28:28 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/2 "2022-03-24T21:28:28Z")

</div>

Вы можете выполнить команду

```
 ./launcher start app

```

чтобы запустить старый контейнер. Это вернет вас в рабочее состояние.

---

<div class="post-metadata">

### Author: ![luxaritas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luxaritas/32/254171_2.png) [@luxaritas](https://meta.discourse.org/u/luxaritas)
#### Post date: [24.Март.2022 21:29:30 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/3 "2022-03-24T21:29:30Z")

</div>

Да, я в курсе этого (и уже сделал это), однако меня интересует, какой следующий шаг мне стоит предпринять в плане обновления.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24.Март.2022 21:33:30 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/4 "2022-03-24T21:33:30Z")

</div>

Ох. Значит, это не помогло 🤷

У меня была похожая проблема, но, похоже, моё решение вам не поможет.

Вы не установили SKIP\_POST\_DEPLOYMENT\_MIGRATIONS в вашем app.yml? Если да, то вам нужно выполнить миграцию базы данных с этим параметром, установленным в ноль, а затем пересобрать приложение, но, думаю, дело не в этом.

---

<div class="post-metadata">

### Author: ![luxaritas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luxaritas/32/254171_2.png) [@luxaritas](https://meta.discourse.org/u/luxaritas)
#### Post date: [24.Март.2022 21:34:50 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/5 "2022-03-24T21:34:50Z")

</div>

Нет, не похоже.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [24.Март.2022 21:39:00 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/6 "2022-03-24T21:39:00Z")

</div>

Вот что я думал. Значит, может быть реальная проблема, связанная с возможностью миграции от одной конкретной точки до текущей. Но этого не должно происходить.

---

<div class="post-metadata">

### Author: ![undasein](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/undasein/32/222392_2.png) [@undasein](https://meta.discourse.org/u/undasein)
#### Post date: [31.Март.2022 13:55:23 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/7 "2022-03-31T13:55:23Z")

</div>

Посмотрите это:

> [@Error upgrading, failed to bootstrap](https://meta.discourse.org/t/error-upgrading-failed-to-bootstrap/221871/17?u=undasein):
>
> Sorry. I’m on my phone and not quite thinking well enough to explain… After the start app su - postgres psql discourse And then the drop table discourse\_reactions\_reactions ; And then type exit or control-d a few times to get out of everything

Я очистил все таблицы, которые вызывали ошибки (по одной; в итоге их оказалось 7), пока не смог пересобрать приложение без ошибок.

В вашем случае, похоже, проблема в столбце:

`PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists`

Возможно, стоит выяснить, к какой таблице он относится, чтобы очистить её, либо просто удалить этот столбец.

Думаю, проблема в том, что при частичном переносе данные эти таблицы уже созданы, поэтому попытка создать их снова вызывает ошибку. Может быть, стоит добавить условие в этот процесс, чтобы избежать ошибок? (Я не эксперт) @pfaffman

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [31.Март.2022 15:32:45 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/8 "2022-03-31T15:32:45Z")

</div>

Звучит правильно, @undasein.

Похоже, вы хотите удалить столбец `bookmarkable_id` из таблицы bookmarks. После того как вы зайдёте в контейнер и в postgres следующим образом:

```plaintext
cd /var/discourse
./launcher enter app
su - postgres
psql

```

вы выполните:

```plaintext
ALTER TABLE bookmarks 
DROP COLUMN bookmarkable_id;
DROP COLUMN bookmarkable_type;

```

Однако, если форум работает, не помешает сделать резервную копию только базы данных. Если форум не работает, вы можете создать резервную копию с помощью команды `discourse backup` после строки `enter app` выше.

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [31.Март.2022 22:11:01 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/9 "2022-03-31T22:11:01Z")

</div>

Та же проблема! Это правильное решение?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [31.Март.2022 23:08:02 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/10 "2022-03-31T23:08:02Z")

</div>

Так я и думал. Попробуй и дай нам знать.

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [01.Апрель.2022 06:39:48 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/11 "2022-04-01T06:39:48Z")

</div>

Я не очень разбираюсь в Discourse.

@sam, есть какие-то идеи, как двигаться дальше? Стандартная установка и обновление превратились в кошмар.

Правильно ли я понимаю, что вышеописанный способ решает эту проблему?

Заранее спасибо.

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [01.Апрель.2022 15:49:22 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/12 "2022-04-01T15:49:22Z")

</div>

> [@pfaffman](#):
>
> `DROP COLUMN bookmarkable_type;`

К сожалению, не сработало, всё ещё получаю:

```plaintext
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists

```

Нужно ли было выполнить какие-то дополнительные действия после этих команд?

```plaintext
ALTER TABLE bookmarks 
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;

```

Спасибо за помощь.

---

<div class="post-metadata">

### Author: ![Benjamin\_D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benjamin_d/32/277831_2.png) [@Benjamin\_D](https://meta.discourse.org/u/Benjamin_D)
#### Post date: [02.Апрель.2022 05:56:46 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/13 "2022-04-02T05:56:46Z")

</div>

Привет, Ник,  
Я пытаюсь воспроизвести это. Какой коммит в твоей версии?  
Попробуй использовать

```plaintext
version: cd7ce52138bed391d5efc56366e7a6517a6079e7

```

в своём app.yml. Это версия 10-дневной давности, сразу перед отменой коммита, который был отменён и, похоже, имел схожие проблемы.

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [02.Апрель.2022 06:33:51 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/14 "2022-04-02T06:33:51Z")

</div>

Доброе утро, Бен,

Не мог бы ты, пожалуйста, рассказать мне пошагово, какие команды нужно выполнить?

Я могу обновить всё и так далее без проблем, но это первый раз, когда что-то пошло не так, и честно говоря, я сейчас совсем не в своей тарелке, ха-ха.

---

<div class="post-metadata">

### Author: ![Benjamin\_D](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/benjamin_d/32/277831_2.png) [@Benjamin\_D](https://meta.discourse.org/u/Benjamin_D)
#### Post date: [02.Апрель.2022 10:10:51 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/15 "2022-04-02T10:10:51Z")

</div>

Не могли бы вы выполнить `./launcher start app` и проверить установленную версию на `https://your.domain/admin`, чтобы я мог повторить ваши действия. Есть ли какие-то плагины?

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [02.Апрель.2022 14:28:49 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/16 "2022-04-02T14:28:49Z")

</div>

Привет, Бен,

Установленная версия: 2.9.0.beta2  
([5374e587a3](https://github.com/discourse/discourse/commits/5374e587a319efcc248a0c059c1802eee9f90aa1))

Установленные плагины:  
discourse-reactions  
docker\_manager  
styleguide

Спасибо,  
Ник

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [02.Апрель.2022 14:30:54 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/17 "2022-04-02T14:30:54Z")

</div>

> [@Benjamin\_D](#):
>
> ./launcher start app

```plaintext
./launcher start app
-bash: ./launcher: файл или каталог не найден

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [02.Апрель.2022 18:09:45 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/18 "2022-04-02T18:09:45Z")

</div>

```
 cd /var/discourse

```

До

```
./launcher start app

```

---

<div class="post-metadata">

### Author: ![Nick\_Tomlinson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nick_tomlinson/32/282728_2.png) [@Nick\_Tomlinson](https://meta.discourse.org/u/Nick_Tomlinson)
#### Post date: [02.Апрель.2022 19:27:24 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/19 "2022-04-02T19:27:24Z")

</div>

Итак, я заметил, что у меня было несколько обновлений Ubuntu, поэтому всё на сервере актуально.

Попробовал снова, и всё ещё:

```plaintext
PG::DuplicateColumn: ERROR: столбец "bookmarkable_id" отношения "bookmarks" уже существует

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [02.Апрель.2022 20:47:22 UTC](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924/20 "2022-04-02T20:47:22Z")

</div>

Это кажется вероятным решением. Вы должны иметь возможность обновиться до этой версии, и, возможно, тогда сможете перейти на текущую? Что-то в этом роде имеет для меня смысл.

[Следующая страница](https://meta.discourse.org/t/recovering-from-failed-partially-applied-upgrade/221924.md?page=2)
