以前升级 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
升级完成。