Site Loader

对于Nextcloud的升级一向比较激进,更新频道选择“Beta测试版”,今天升级到Nextcloud 20.0.2 RC1,升级完毕后,安全与设置警告页面中提示如下图,大概意思是某些数据库的主键值掉失,一般情况下Nextcloud会明确给出解决办法,这里提示运行“occ db:add-missing-primary-keys”命令重新添加主键值。

ssh登录Nextcloud服务器,进入Nextcloud的web目录,按提示运行如下命令。

sudo -u www-data php occ db:add-missing-primary-keys 

奇怪的事情来了,提示db:add-missing-primary-keys命令没有定义,只有下图所提示的5个db命令。

没有定义,你叫运行是几个意思呢?

列出 occ的所有命令看看。

sudo -u www-data php occ list 

找到db部分,确实只有提示的5个命令。

不服,进入Nextcloud的core/Command/Db目录查看,AddMissingPrimaryKeys.php文件赫然在列,怎么回事呢?命令跑哪去了?

带着疑问一个个目录查找,看能不能找出问题。

在core目录下发现一个register_command.php文件,注册命令?难道是这里?打开文件查看。

找到与db命令相关的代码项,唯独就是缺少AddMissingPrimaryKeys。

那好吧,没有就自己添加吧,插入如下代码。

$application->add(new OC\Core\Command\Db\AddMissingPrimaryKeys(\OC::$server->getDatabaseConnection(), \OC::$server->getEventDispatcher())); 

保存并退出,再次查看occ命令列表,命令回来了。

sudo -u www-data php occ list 

运行修复命令。

sudo -u www-data php occ db:add-missing-primary-keys 

终于正常运行了,等待修复完毕。

刷新安全与设置警告页面,错误提示消失,成功修复。

Post Author: 回车

发表评论

电子邮件地址不会被公开。 必填项已用*标注