Ошибки MySql/MariaDB

Deadlock found when trying to get lock

SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
The SQL being executed was: UPDATE tbl_point
SET location = POINTFROMTEXT(CONCAT('POINT(55.683452 37.526923)'))

Для выяснения причины ошибки, необходимо запустить SHOW ENGINE INNODB STATUS;

No such file or directory

SQLSTATE[HY000] [2002] No such file or directory

Ошибка появляется при неверном указании сокета для драйвера PDO pdo_mysql.default_socket

Got error 28 from storage engin

Got error 28 from storage engine

Got error 28 from storage engine - Закончилось место на диске

MySQL Error: Out of resources when opening file './db_name/table_name.MYD' (Errcode: 24)

Checking for corrupt, not cleanly closed and upgrade needing tables

Checking for corrupt, not cleanly closed and upgrade needing tables

mysqlcheck –check-upgrade –all-databases –auto-repair -u root -p

mysql_upgrade –force -u root -p

Too many open files

Too many open files

Превышение одновременно открытых дескрипторов

Решение

Анализ состояния

Сколько разрешено открывать файловых дескрипторов пользователю mysql (системные ограничения)

# cat /etc/security/limits.conf | grep -vP '^#'

Сколько разрешено открывать файловых дескрипторов (конфигурация)

cat /etc/mysql/my.cnf|grep open_files_limit

Сколько занято дескрипторов

lsof -u mysql | wc -l

Cколько дескрипторов разрешено в MySQL

# mysql -se "show variables like 'open_files_limit'" -uroot -p
Variable_name Value
open_files_limit 1024

Исправление

nano /etc/security/limits.conf

Воставляем число файловых дескрипторов (для пользователя mysql)

mysql hard nofile 102400 mysql soft nofile 102400

nano /etc/mysql/my.cnf

Выставляем число одновременно открытых файлов в конфигурации

open_files_limit 8192

или

Выставляем число дескрипторов в разрешенных

echo 'mysql - nofile 8192' > /etc/security/limits.d/mysql.conf

Перезапускаем сервер

# service mysql restart

PAM

Если после перезапуска mysql не применил новые ограничения, значит PAM это запретил. Тогда добавляем разрешение в PAM.

Проверяем ограничения PAM

grep -r limits /etc/pam.*

Снимаем ограничение (Debian)

$ echo 'session required pam_limits.so' >> /etc/pam.d/common-session

systemd

Сбрасываем ограничения в systemd

echo " [Service] LimitNOFILE=infinity LimitMEMLOCK=infinity" > /etc/systemd/system/mysqld.service

Перезагружаем настройки демона systemd

systemctl reload mariadb.service