日存档: 2020 年 07 月 08 日

解决 Nextcloud 从 17 升级到 18 的错误

以前升级 Nextcloud 都比较顺利,一直从 14 升级到了 17,但是从 17 升级 18 就遇到错误了。一直报错:

Doctrine\DBAL\Exception\InvalidFieldNameException: An exception occurred while executing 'UPDATE oc_flow_operations SET entity = ? WHERE entity = ''' with params ["OCA\WorkflowEngine\Entity\File"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'entity' in 'where clause'
Update failed

尝试修复一直没卵用,这下懵逼了,只能老老实实的问 Google,最后在官方 github issues 里面找到了原因,原来是数据库里面少了一个字段:https://github.com/nextcloud/server/issues/18265 大佬提供的解决办法是在 mysql 里面跑命令:

ALTER TABLE `oc_flow_operations` ADD `entity` VARCHAR(255) NOT NULL ;

mysql 的命令我当然不会,不过可以用 phpMyAdmin 做相同的事情,在 oc_flow_operations 内新建 entity 字段。

然后手动升级:

$su
#sudo -u wwwrun -s
$php occ upgrade
$php occ maintenance:mode --off

升级完成。