Возникла ошибка при подключении сервера баз данных

Долго боролся с этой проблемой, но так и не понял как вылечил. Все же склоняюсь к тому что в базе данных присутствовали одновременно два типа таблиц InnoDB и myISAM. Нужно все перевести в один тип. И по умолчанию для вновь создаваемых поставить MyISAM(в моем случае). Еще проблема может быть в синтаксической ошибке в конфиге

Список команд которые могут помочь
Первым делом нам необходимо взять более менее нормальный конфигурационный файл my.cnf, более подходящий для нашего сервера. А найти его можно в /usr/share/mysql.

Там есть четыре необходимых нам файлика: my-small.cnf, my-medium.cnf, my-large.cnf и my-huge.cnf. Выбираем под наш сервер, нашу память, наши запросы наиболее подходящий файл. my-small.cnf — конфигурация для систем с обьемом памяти менее 64Mb, где mysql используется время от времени. Это не для нас. medium.cnf — чуть лучше, под mysql может выделяться до 64Мb памяти.

В общем то это тоже обычно не для нас, разве что очень маломощные VDS, VPS. my-large.cnf — уже посерьезнее, для систем с оперативной памятью от 512Мb. my-huge.cnf — для систем с оперативной памятью 1-2Gb. Выбираем одну из наиболее подходящих нам конфигураций и переписываем ее вместо текущей my.cnf .

Например:

cp /usr/share/mysql/my-large.cnf /etc/my.cnf

Сначала заходим в ISP manager -> Возможности и включаем сервер баз данных если не горит
Сначала нужно проверить все базы чтоб у них был один тип. В моем случае MyISAM http://ler.co.in/posts/innodb-myisam Узнать какие типы таблиц у вас можно так

mysql -u root -pPASSWORD -e "select engine from information_schema.tables" | sort | uniq -c
mysql -uroot -pPASSWORD

и далее

FLUSH PRIVILEGES;

Исправляем крашеные таблицы

mysqlcheck -uroot -pPASSWORD --repair --extended -A
Если проблемы с рутом то читать тут http://stackoverflow.com/questions/4371/how-do-i-retrieve-my-mysql-username-and-password

Также изучаем логи мускуля по пути
/var/log/mysql/error.log
Содержимое etc/mysql/my.cnf примерно следующее после

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
default-storage-engine = MyISAM
character-set-server=utf8
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
collation-server=utf8_general_ci
skip-character-set-client-handshake
skip-innodb
key_buffer_size = 32M
tmp_table_size =96M
max_heap_table_size =96M
table_cache =512
innodb_buffer_pool_size=8M
slow-query-log=1
slow-query-log-file=/var/log/mysql/slow.log

Можно установить mysql tuner и изучить косяки мускуля

sudo aptitude install mysqltuner
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
sudo ./mysqltuner.pl
Обновлено: 30/03/2016 — 23:08

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *