我遇到了 mysql 无法更新的问题。最后我不得不卸载它,这也卸载了许多其他文件,不幸的是,我自动删除了它。无论如何,我确实保存了自动删除内容的副本,并备份了我的数据库。
我清除了 mysql-server、mysql-client 和 mysql-common。我重新安装了 mysql-server,现在它是最新版本,但我没有备份用户,因为没有提到这一点,我完全忘记了。我希望我做的备份能保留它们,但没有。所以我花了一段时间,但我找到了我用于大多数数据库的密码,重新安装了自动删除的密码,大多数一切都恢复正常,但我确实遇到了一个问题……
我要说的是,我也运行了 rsync 并且基本上试图将我的系统恢复到本月初,然后再尝试对 mysql 做任何事情,但是我仍然遇到 mysql 的问题,所以它没有恢复到月初的状态(我想我必须找一个使用过 rsync 的人告诉我如何让它完全备份你的系统并将你的系统完全恢复到你运行它时的状态)。
我之所以这样说,是因为我确实对一个网站做了一些更改(处理 mysql),编写了一个 python 脚本(与此问题无关)并且当然运行了系统更新(但它不应该影响 nextcloud 对 opcache/memcache 的访问),因为 rsync 备份所以项目可能已更新。我相信 nextcloud 在那段时间更新了,因为我确实必须再次更新 NC 才能让 nextcloud 的其他部分完全正常运行。由于某种原因,文件结构没有显示在桌面网页上,但它在我的手机上,但将其更新到 25.02 解决了这个问题,但更新到 nextcloud 并没有导致这个问题,因为它在开始时(rsync 之前)确实有效,当我更新到 25.02 时,mysql 仍然告诉我有一个更新,但由于冲突而被 apt 暂停(因此不允许我更新)。
一直运行的 nextcloud conf 文件中没有任何变化:
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'memcache.local' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
我查看了 php 信息,一切似乎都已启用并正在运行......
Zend OPcache
Opcode Caching Up and Running
redis
Redis Support enabled
Redis Version 5.3.7
raphf
Resource and persistent handle factory support enabled
Extension version 2.0.1
memcached
memcached support enabled
Version 3.2.0
http
HTTP Support enabled
Extension Version 4.2.3
但如果我尝试运行,sudo -u www-data php -f /web/nextcloud/cron.php
我会得到:
PHP Warning: Cannot load module "http" because required module "raphf" is not loaded in Unknown on line 0
OCP\HintException: [0]: Memcache \OC\Memcache\Redis not available for local cache
(Is the matching PHP module installed and enabled?)
Cron Daemon 每 5 分钟发送一次电子邮件消息。除了上述错误之外,似乎没有记录其他错误来为我指明解决此问题的方向。redis-server 日志看起来一切运行正常。
1840:M 25 Dec 2022 06:02:50.051 * 10 changes in 300 seconds. Saving...
1840:M 25 Dec 2022 06:02:50.055 * Background saving started by pid 137575
137575:C 25 Dec 2022 06:02:50.510 * DB saved on disk
137575:C 25 Dec 2022 06:02:50.511 * RDB: 0 MB of memory used by copy-on-write
1840:M 25 Dec 2022 06:02:50.557 * Background saving terminated with success
我很困惑,甚至不知道从哪里开始 :( 我试图包含所有相关信息,但如果我需要包含其他任何内容,请告诉我
答案1
我不知道如何修复它。我所做的就是运行我编写的脚本,将 php 版本改回 7.4。我尝试运行sudo -u www-data php -f /web/nextcloud/cron.php
它,它成功了。然后,为了好玩,我再次运行该脚本,将其更改为 8.1,然后再次运行 cron 命令,它成功了,没有 http/raphf memcache 错误。切换到 PHP 7.4,然后返回 8.1,不知何故解决了这些问题。
:( 哈哈,我讨厌当我修复东西时却不知道改变了什么,因为没有文件被改变,它们已经在我的系统中了。当 cron 命令在 PHP 7.4 中运行时,它运行了很长时间(因为自从我更新 mysql 以来出现错误)。我看到 mysql 和 php 非常占用 CPU。
我猜想可能是因为必须恢复 nextcloud 的 mysql db 中某些内容,所以出现了问题。出于某种原因,它适用于 cron,也许它更新了 nextcloud db 并修复了 nextcloud db 中设置错误的内容……但这只是猜测……无法解释为什么它在 7.4 中有效。备份数据库时,它位于一个正常工作的数据库中,而我运行的是 PHP 8.1