Ошибка базы данных Nextcloud после обновления: что проверить в первую очередь?
Восстановите доступ к Nextcloud после обновления, диагностировав ошибки SQL, проверив подключение к базе данных и безопасно завершив прерванные миграции.
Если после обновления Nextcloud начинает отображать исключение «Ошибка базы данных», проверьте основную причину ошибки базы данных, nextcloud.logпрежде чем вносить изменения в какие-либо таблицы. Сначала восстановите подключение к базе данных; если обновление прервалось, завершите его, occ upgradeи только после этого используйте описанные в документации команды восстановления, когда это будет оправдано данными журналов.
Сообщение в браузере — это симптом, а не диагноз. Возможно, Nextcloud не может связаться с MySQL/MariaDB или PostgreSQL, учетная запись базы данных больше не проходит аутентификацию, или код приложения и схема находятся на разных этапах обновления. В официальном справочнике Nextcloud по устранению неполадок рекомендуется сопоставить идентификатор запроса, вызвавшего ошибку, с журналом сервера.
config/config.php. Файл журнала по умолчанию — data/nextcloud.log, но в случае пользовательских развертываний журналы могут записываться в другое место.sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
Вторая команда применима только к хосту, работающему под управлением MariaDB через systemd; для других развертываний используйте службу PostgreSQL или журналы контейнера. Найдите код исключения SQLSTATEи первую причину, связанную с базой данных, а не полагайтесь на последнюю строку трассировки стека.
| Зарегистрировать подсказку | Первая полезная проверка |
|---|---|
SQLSTATE[HY000] [2002] | Процесс базы данных, имя хоста, порт, путь к сокету или доступ к файлу SQLite; интерпретацию определяет драйвер. |
SQLSTATE[HY000] [1040] | Итого: исчерпаны соединения с MySQL/MariaDB и количество активных сессий. |
MySQL server has gone away | Перезапуски базы данных, разрывы соединения, перегрузка ресурсов и журналы сервера. |
| Аутентификация или доступ запрещены | Учетная запись базы данных, пароль, доступ к сети и права доступа. |
| Отсутствует таблица, связь или столбец. | Завершено ли обновление базы данных и соответствует ли установленный код ее схеме. |
Первые три примера описаны в документации Nextcloud по распространенным ошибкам. Сообщение об отсутствии таблицы не означает разрешения на ее создание вручную: сначала определите точную причину сбоя миграции.
Перед повторной попыткой миграции сохраните восстанавливаемую резервную копию базы данных вместе с конфигурацией и данными Nextcloud. Официальная процедура резервного копирования также включает пользовательские приложения и темы, если они присутствуют. Убедитесь, что резервная копия относится к тому же моменту времени; резервная копия, содержащая только код, не сможет восстановить частично измененную базу данных.
Приведенные ниже команды предполагают стандартную установку Debian/Ubuntu по адресу /var/www/nextcloud, с www-dataучетной записью веб-сервера в качестве пользователя . Запускайте occот имени соответствующего HTTP-пользователя; для пакетов, Docker, Snap, AIO и управляемых установок используются другие пути и методы выполнения. Справочник по командам occ объясняет эти требования.
Если в журналах отображается отказ в соединении, недоступное сокетное соединение или недоступный сервер, сначала убедитесь, что существующая служба базы данных запущена. Это альтернативные проверки на уровне хоста, а не список для выполнения без разбора:
sudo systemctl status mariadb
sudo systemctl status postgresql
Для отдельного сервера базы данных также проверьте DNS, правила брандмауэра, выбранный порт и доступность сети с хоста или контейнера приложения Nextcloud. Проверьте config/config.phpналичие dbtype, dbhost, dbname, и dbuser. Справочник по параметрам конфигурации объясняет имена хостов, порты и синтаксис сокетов Unix. Никогда не вставляйте это dbpasswordв общедоступные заявки или команды оболочки, которые раскрывают это в истории.
Если пароль базы данных был изменен или учетные данные были скорректированы во время развертывания, исправьте это несоответствие, используя свой рабочий процесс управления секретами. Если сервер сообщает о слишком большом количестве подключений, проверьте активные подключения и причину их накопления, прежде чем рассматривать изменения пропускной способности. Команда индексации не устранит обрыв соединения.
Одновременное обновление PHP или сервера базы данных может нарушить ранее работавшую установку. Сравните целевую версию Nextcloud с официальными системными требованиями и примечаниями к выпуску, а не предполагайте, что все установленные версии драйверов и серверов остаются поддерживаемыми. Согласно проверенной документации Nextcloud 35, поддерживаются PHP 8.3–8.5; поддерживаемые версии баз данных описаны там отдельно. Более ранние версии имеют другие ограничения.
Также убедитесь, что драйвер базы данных PHP, необходимый для выбранного вами механизма, включен как в командной строке, так и в веб-среде PHP. Не следует бездумно понижать версию сервера базы данных после миграции схемы: восстанавливайте данные только из совместимого и согласованного плана резервного копирования.
После того как база данных станет доступна и будет создана резервная копия, перейдите в каталог установки Nextcloud и проверьте её состояние:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Если Nextcloud сообщает о незавершенном или ожидающем обновления обновлении, следуйте поддерживаемому пути обновления для установленных исходной и целевой версий. Для обычной ручной установки выполните:
sudo -E -u www-data php occ upgrade
Не прерывайте выполнение команды и не запускайте параллельные процессы обновления. Ознакомьтесь с ее выводом: успешная миграция отличается от ошибки подключения к базе данных. В документации Nextcloud по ручному обновлению четко указано, occ upgradeкогда веб-процесс зависает и maintenance:repairесли требуется восстановить путь обновления:
sudo -E -u www-data php occ maintenance:repair
Используйте maintenance:repairпосле анализа причины сбоя; это не заменяет исправление неверных учетных данных, остановленной базы данных или действительно несовместимой среды выполнения. Если occ upgradeсбой произошел при конкретной миграции SQL, сохраните точное исключение и найдите исправление для конкретной версии или восстановите полную соответствующую резервную копию, вместо того чтобы экспериментировать с ручными DDL-операциями.
Некоторые миграции намеренно откладываются. В работающем экземпляре в административном обзоре могут запрашиваться необязательные столбцы, индексы или первичные ключи. Следующие команды обеспечивают предварительный тестовый запуск, если это поддерживается данной версией:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run
Выполняйте соответствующую команду только в том --dry-runслучае, если этого требует зарегистрированная проблема или административная проверка, и предлагаемое изменение было рассмотрено. Эти операции обслуживания могут занимать время на больших базах данных. В Nextcloud 35 дополнительно описана эта функция db:schema:check; не следует предполагать, что она существует в более старых ветвях. См. справочник команд базы данных для получения информации о поведении, специфичном для конкретной версии.
sudo -E -u www-data php occ status. Убедитесь, что установленная версия соответствует предполагаемому выпуску, обновление не требуется и не возникает новых критических исключений SQL.sudo -E -u www-data php occ maintenance:mode --off.nextcloud.logВо время этих проверок следите за появлением новых исключений в базе данных.Если возвращается то же исключение базы данных, остановите повторные миграции и соберите идентификатор запроса, текст SQLSTATE, журнал базы данных и сервера, пару версий и occвывод ошибки. Эти данные помогут определить, связана ли оставшаяся проблема с подключением, несовместимым программным обеспечением или конкретной неудачной миграцией. Успешный вход в систему сам по себе не является доказательством того, что все фоновые задачи и запросы к базе данных работают.
Восстановите доступ к Nextcloud после обновления, диагностировав ошибки SQL, проверив подключение к базе данных и безопасно завершив прерванные миграции.
Используйте команду OCC в Nextcloud для сброса пароля администратора из командной строки сервера, с инструкциями по заполнению полей для имен пользователей, разрешений и внешних сервисов авторизации.
Чтобы устранить предупреждение HSTS от Nextcloud, установите заголовок на Apache, NGINX или вашем TLS-прокси, а затем безопасно проверьте публичный HTTPS-ответ.
Причины сбоев при установке приложений из App Store могут быть связаны с DNS, HTTPS, прокси-сервером, TLS или проблемами конфигурации самого сервера Nextcloud.
Перенесите обработку миниатюр в контролируемый фоновый режим, обрежьте неиспользуемые размеры предварительного просмотра и проверьте очередь, не перегружая сервер Nextcloud.
Найдите файл, правило исключения, проблему с подключением или состояние базы данных клиента, препятствующие синхронизации Nextcloud, а затем безопасно проверьте загрузку и скачивание файлов.
Найдите ограничение на использование PHP OPcache, вызывающее предупреждение Nextcloud, обновите правильную конфигурацию PHP для веб-приложений, безопасно перезапустите систему и проверьте результат.
Сравните встроенный и основанный на Docker код, затем подключите Collabora Online к Nextcloud через защищенный обратный прокси-сервер HTTPS.
Спланируйте надежное развертывание Nextcloud HA с использованием общего хранилища, блокировок Redis, маршрутизации MariaDB с учетом кворума и практичных проверок отказоустойчивости.
Настройте и проверьте доступность TURN-ретранслятора для Nextcloud Talk, если брандмауэры или ограничительные NAT блокируют прямые вызовы.