Ошибка базы данных Nextcloud после обновления: что проверить в первую очередь?

Если после обновления Nextcloud начинает отображать исключение «Ошибка базы данных», проверьте основную причину ошибки базы данных, nextcloud.logпрежде чем вносить изменения в какие-либо таблицы. Сначала восстановите подключение к базе данных; если обновление прервалось, завершите его, occ upgradeи только после этого используйте описанные в документации команды восстановления, когда это будет оправдано данными журналов.

Определите фактическую причину неисправности.

Сообщение в браузере — это симптом, а не диагноз. Возможно, Nextcloud не может связаться с MySQL/MariaDB или PostgreSQL, учетная запись базы данных больше не проходит аутентификацию, или код приложения и схема находятся на разных этапах обновления. В официальном справочнике Nextcloud по устранению неполадок рекомендуется сопоставить идентификатор запроса, вызвавшего ошибку, с журналом сервера.

  1. Запишите время, полный текст ошибки браузера и любой отображаемый идентификатор запроса. Не публикуйте конфиденциальные записи журнала, не удалив секретную и личную информацию.
  2. Найдите настроенный каталог данных в config/config.php. Файл журнала по умолчанию — data/nextcloud.log, но в случае пользовательских развертываний журналы могут записываться в другое место.
  3. В стандартной установке Linux проверьте последние записи, а затем журналы службы базы данных. Укажите фактический путь к Nextcloud:
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. Официальная процедура резервного копирования также включает пользовательские приложения и темы, если они присутствуют. Убедитесь, что резервная копия относится к тому же моменту времени; резервная копия, содержащая только код, не сможет восстановить частично измененную базу данных.

  • По возможности приостанавливайте синхронизацию и фоновые задачи на время восстановления, особенно если речь идет о записи данных в базу данных или ее обновлении.
  • Сохраняйте записи о старой и новой версиях Nextcloud, используемом движке/версии базы данных, версии PHP и способе обновления.
  • Не удаляйте таблицы базы данных, не импортируйте пустую схему, не выполняйте случайные SQL-запросы с форумов и не восстанавливайте многократно только один компонент многокомпонентной резервной копии.

Приведенные ниже команды предполагают стандартную установку Debian/Ubuntu по адресу /var/www/nextcloud, с www-dataучетной записью веб-сервера в качестве пользователя . Запускайте occот имени соответствующего HTTP-пользователя; для пакетов, Docker, Snap, AIO и управляемых установок используются другие пути и методы выполнения. Справочник по командам occ объясняет эти требования.

Перед миграцией восстановите подключение к базе данных.

Проверьте настройки службы базы данных и подключения к Nextcloud.

Если в журналах отображается отказ в соединении, недоступное сокетное соединение или недоступный сервер, сначала убедитесь, что существующая служба базы данных запущена. Это альтернативные проверки на уровне хоста, а не список для выполнения без разбора:

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.

После того как база данных станет доступна и будет создана резервная копия, перейдите в каталог установки 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; не следует предполагать, что она существует в более старых ветвях. См. справочник команд базы данных для получения информации о поведении, специфичном для конкретной версии.

Проверьте восстановление и откройте доступ.

  1. Повторите sudo -E -u www-data php occ status. Убедитесь, что установленная версия соответствует предполагаемому выпуску, обновление не требуется и не возникает новых критических исключений SQL.
  2. Если режим обслуживания все еще включен , а обновление успешно завершено , отключите его с помощью команды sudo -E -u www-data php occ maintenance:mode --off.
  3. Откройте веб-интерфейс, войдите в систему, получите список файлов и выполните небольшую авторизованную загрузку и скачивание. nextcloud.logВо время этих проверок следите за появлением новых исключений в базе данных.
  4. Возобновите запланированные задания и синхронизацию клиентов, затем проверьте настройки администрирования на наличие оставшихся предупреждений базы данных.

Если возвращается то же исключение базы данных, остановите повторные миграции и соберите идентификатор запроса, текст SQLSTATE, журнал базы данных и сервера, пару версий и occвывод ошибки. Эти данные помогут определить, связана ли оставшаяся проблема с подключением, несовместимым программным обеспечением или конкретной неудачной миграцией. Успешный вход в систему сам по себе не является доказательством того, что все фоновые задачи и запросы к базе данных работают.

Оставить комментарий

Ошибка базы данных Nextcloud после обновления: что проверить в первую очередь?

Восстановите доступ к Nextcloud после обновления, диагностировав ошибки SQL, проверив подключение к базе данных и безопасно завершив прерванные миграции.

Сброс утерянного пароля администратора Nextcloud с помощью OCC

Используйте команду OCC в Nextcloud для сброса пароля администратора из командной строки сервера, с инструкциями по заполнению полей для имен пользователей, разрешений и внешних сервисов авторизации.

Добавьте заголовок HSTS к HTTPS-конечной точке, обслуживающей Nextcloud.

Чтобы устранить предупреждение HSTS от Nextcloud, установите заголовок на Apache, NGINX или вашем TLS-прокси, а затем безопасно проверьте публичный HTTPS-ответ.

Устранение неполадок при установке приложения Nextcloud, сообщающего об отсутствии интернета.

Устранение неполадок при установке приложения Nextcloud, сообщающего об отсутствии интернета.

Причины сбоев при установке приложений из App Store могут быть связаны с DNS, HTTPS, прокси-сервером, TLS или проблемами конфигурации самого сервера Nextcloud.

Снизьте скачки загрузки ЦП в предварительной версии Nextcloud с помощью запланированной очереди.

Перенесите обработку миниатюр в контролируемый фоновый режим, обрежьте неиспользуемые размеры предварительного просмотра и проверьте очередь, не перегружая сервер Nextcloud.

Переход от «обработки файлов» к синхронизации Nextcloud Desktop Sync

Найдите файл, правило исключения, проблему с подключением или состояние базы данных клиента, препятствующие синхронизации Nextcloud, а затем безопасно проверьте загрузку и скачивание файлов.

Устраните предупреждение Nextcloud OPcache, отрегулировав правильный лимит.

Найдите ограничение на использование PHP OPcache, вызывающее предупреждение Nextcloud, обновите правильную конфигурацию PHP для веб-приложений, безопасно перезапустите систему и проверьте результат.

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Сравните встроенный и основанный на Docker код, затем подключите Collabora Online к Nextcloud через защищенный обратный прокси-сервер HTTPS.

Создайте отказоустойчивый кластер Nextcloud с помощью Galera.

Спланируйте надежное развертывание Nextcloud HA с использованием общего хранилища, блокировок Redis, маршрутизации MariaDB с учетом кворума и практичных проверок отказоустойчивости.

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Настройте и проверьте доступность TURN-ретранслятора для Nextcloud Talk, если брандмауэры или ограничительные NAT блокируют прямые вызовы.