Nextcloudのmailアプリのアップデートに失敗してNextcloudが使えなくなって困る

Nextcloudアプリのアップデートを行ったところmailの処理中にコケてしまったようです.

$ sudo -u www-data php occ app:update --all
richdocuments new version available: 3.7.17
richdocuments updated
forms new version available: 2.2.1
forms updated
mail new version available: 1.9.2
An unhandled exception has been thrown:
Error: Call to undefined method OCA\Mail\Db\MessageMapper::findWithEmptyMessageId() in /var/www/files.matoken.org/apps/mail/lib/Migration/AddMissingMessageIds.
php:55
Stack trace:
#0 /var/www/files.matoken.org/lib/private/Repair.php(112): OCA\Mail\Migration\AddMissingMessageIds->run(Object(OC\Repair))
#1 /var/www/files.matoken.org/lib/private/legacy/OC_App.php(1042): OC\Repair->run()
#2 /var/www/files.matoken.org/lib/private/legacy/OC_App.php(979): OC_App::executeRepairSteps('mail', Array)
#3 /var/www/files.matoken.org/lib/private/Installer.php(206): OC_App::updateApp('mail')
#4 /var/www/files.matoken.org/core/Command/App/Update.php(116): OC\Installer->updateAppstoreApp('mail', false)
#5 /var/www/files.matoken.org/3rdparty/symfony/console/Command/Command.php(255): OC\Core\Command\App\Update->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#6 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(1000): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(271): Symfony\Component\Console\Application->doRunCommand(Object(OC\Core\Command\App\Update), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 /var/www/files.matoken.org/3rdparty/symfony/console/Application.php(147): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 /var/www/files.matoken.org/lib/private/Console/Application.php(215): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/files.matoken.org/console.php(100): OC\Console\Application->run()
#11 /var/www/files.matoken.org/occ(11): require_once('/var/www/files....')
#12 {main}mk@www6073uo:/var/www/files.matoken.org

再度実行すると処理は進んだようですが,縮退モードのような感じになっています.この状態でNextcloudのWebにアクセスするとアップデートを求められて利用できません.

$ sudo -u www-data php occ app:update --all
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
files_linkeditor new version available: 1.1.4
files_linkeditor updated

どうしたもんかととりあえず原因であろうmailをアップデートしようとするとすでに最新のようです.
次にmailを無効化してみました.するとNextcloud Webが利用できるようになりました.
一旦削除してインストールし直したほうが確実だろうなと思いつつmailを有効化するとNextcloudもmailも利用できるようになりました.

$ sudo -u www-data php occ app:update mail (1)
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
$ sudo -u www-data php occ app:disable mail (2)
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
mail 1.9.2 disabled
$ sudo -u www-data php occ app:enable mail (3)
mail 1.9.2 enabled
  1. mailアプリをアップデートしても反応はない
  2. mailアプリを無効化してNextcloud復旧
  3. mailアプリを有効化

occ app:disable mail の後 occ app:remove mail && occ app:install mail したほうが確実だと思います.

ちなみにNextcloud Hub以外のあまりメジャーでないアプリなどをインストールしてうまく動かないときにもNextcloudが動かなくなることがあります.そういうときも occ app:disable で復旧できるので覚えておくと助かります.

環境
$ sudo -u www-data php occ app:list | grep \ mail:
  - mail: 1.9.2
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server  1:10.3.27-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です