Долго боролся с этой проблемой, но так и не понял как вылечил. Все же склоняюсь к тому что в базе данных присутствовали одновременно два типа таблиц 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