---
title: "Проблемы с базой данных на Linux-серверах"
description: "Диагностика и устранение неполадок в работе баз данных, развернутых на Linux-серверах. Документация и инструкции по использованию и настройке облачных сервисов Timeweb Cloud."
---

# Проблемы с базой данных

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

В статье рассказываем про возможные неполадки в работе базы данных и способы их устранения.

## Недоступность базы данных

[Подключитесь к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) и выполните следующие проверки.

1.  Проверьте, запущена ли служба MySQL:

```shell
service mysql status
```

Пример вывода для запущенной службы:  
  
![Running (1)](https://content.timeweb.com/assets/a5901850-3163-472f-9a8e-407f553db4f6?width=650&height=196)  
  
Если в выводе отсутствует слово running, служба не запущена. В этом случае необходимо попытаться ее запустить:

```shell
service mysql start
```

После проверьте работу сайта.

Если проблема сохраняется, переходите к следующей проверке.

2.  Проверьте состояние дискового пространства.

В первую очередь выполните команду ниже, чтобы просмотреть общий и занятый объем на диске:

```shell
df -h
```

Важно, чтобы доступное пространство было именно на основном разделе. Если пространство исчерпано, необходимо [расширить диск](https://timeweb.cloud/docs/unix-guides/disk-resizing) или освободить место на нем. Для работы с дисковым пространством рекомендуем использовать [утилиты ncdu или du](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du).

Если на диске достаточно свободного места, но проблема сохраняется, [проверьте состояние inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow).

[Свяжитесь с нами](https://timeweb.cloud/my/support/help-problem), если вам не удается решить проблему самостоятельно.

## Повреждены таблицы БД (Table is marked as crashed)

При возникновении ошибок вида «Warning: Table ... is marked as crashed» необходимо выполнить восстановление таблиц. 

Если на сервере установлен phpMyAdmin, можно выполнить восстановление с его помощью. Для этого перейдите в интерфейс PMA и кликните на нужную базу данных в меню слева. Отметьте в списке те таблицы, которые нужно восстановить (то есть таблицы, имена которых фигурируют в ошибках). В самом низу страницы нажмите на выпадающее меню «С отмеченными» и выберите вариант «Восстановить».

Можно обойтись и без phpMyAdmin, выполнив необходимые действия при [подключении по SSH](https://timeweb.cloud/docs/unix-guides/ssh).

Для восстановления одной таблицы выполните команду:

```shell
mysqlcheck -r имя_базы имя_таблицы -uroot -p
```

Для восстановления всех таблиц в базе используйте:

```shell
mysqlcheck -r имя_базы -uroot -p
```

Вы также можете выполнить проверку всех таблиц в базе с помощью команды:

```shell
mysqlcheck -r -A -uroot -p
```

## Ошибка 2006: MySQL server has gone away

Ошибка MySQL server has gone away означает, что сервер закрыл соединение, что происходит, как правило, в двух случаях: превышение таймаута ожидания или получение сервером слишком большого пакета.

В обоих случаях для решения проблемы потребуется внести правки в конфигурационный файл MySQL. Это можно сделать при [подключении к серверу по SSH](https://timeweb.cloud/docs/unix-guides/ssh) или с помощью веб-консоли в панели управления.

Конфигурационный файл может располагаться по различным путям, например:

```shell
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
```

Чтобы определить, в какой файл необходимо вносить изменения, можно использовать команду вида:

```shell
grep -Rl 'имя_параметра' /etc/*
```

Например:

```shell
grep -Rl 'wait_timeout' /etc/* 
grep -Rl 'max_allowed_packet' /etc/*
```

С ее помощью можно выяснить, в каких файлах прописан интересующий нас параметр, и изменить в них его значение.

### **Таймаут**

Чтобы увеличить таймаут ожидания, необходимо скорректировать значение параметра `wait_timeout`.

Откройте конфигурационный файл с помощью редактора (укажите корректный путь к файлу):

```shell
nano /etc/mysql/my.cnf
```

Измените значение параметра `wait_timeout` на более высокое. Значение указывается в секундах, т.е. чтобы увеличить время ожидания, например, до 10 минут, необходимо указать 600:

```shell
wait_timeout = 600
```

После перезапустите службу MySQL. В Debian/Ubuntu:

```shell
service mysql restart
```

В CentOS:

```shell
service mysqld restart
```

### **Размер пакетов**

В этом случае можно скорректировать максимально допустимый размер пакетов, увеличив параметр `max_allowed_packet`.

Откройте файл конфигурации (укажите корректный путь к файлу):

```shell
nano /etc/mysql/my.cnf
```

Измените значение параметра `max_allowed_packet` на более высокое (значение указывается в мегабайтах):

```shell
max_allowed_packet = 64M
```

И перезапустите службу:

В Debian / Ubuntu:

```shell
service mysql restart
```

В CentOS:

```shell
service mysqld restart
```

## Ошибка 1040: Too many connections

Появление ошибки «Too many connections» говорит о том, что исчерпан лимит подключений к базе данных. Как правило, проблема либо в медленных запросах, которые выполняются слишком долго (в этом случае требуется оптимизация кода), либо в числе одновременных подключений. В этом случае можно попробовать решить проблему увеличением лимита подключений (параметр `max_connections`) в конфигурационном файле MySQL. 

В пункте выше было описано, как определить расположение файла `my.cnf`.

После откройте файл в редакторе, указав корректный путь:

```shell
nano /etc/mysql/my.cnf
```

И замените значение параметра на более высокое, например:

```shell
max_connections = 200
```

После перезапустите службу:

В Debian / Ubuntu:

```shell
service mysql restart
```

В CentOS:

```shell
service mysqld restart
```

## Ошибка 1292: Incorrect date value

При попытке добавить данные в таблицу MySQL:

```shell
ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'columnname' at row 1
```

Из-за этой ошибки **может нарушаться работа импорта в 1С**.

Для решения проблемы необходимо:

      1. Открыть файл `/etc/mysql/my.cnf`:

```shell
nano /etc/mysql/my.cnf
```

      2. В строке, начинающейся с `sql-mode=`, удалить следующие значения:

```shell
NO_ZERO_IN_DATE
NO_ZERO_DATE
STRICT_ALL_TABLES
```

     3. Выполнить перезагрузку mysql-сервера:

```shell
sudo service mysql restart
```

**Примечание:**

Если строка вида `sql-mode=` **отсутствует**, необходимо:

1.  В файл `/etc/mysql/my.cnf` после параметра `[mysqld]` добавить строку:

```shell
sql-mode="ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
```

2.  Выполнить перезагрузку mysql-сервера:

```shell
sudo service mysql restart
```
