Unknown system variable lc_messages
Описание
При попытке подключиться к MySQL с помощью phpMyAdmin выскакивает ошибка «Unknown system variable 'lc_messages'».
Такая же ошибка появляется при вводе SQL-запроса:
> SET lc_messages = 'ru_RU';
Причина
Несоответствие версий phpMyAdmin и MySQL.
Для MySQL 5.5 нужно использовать phpMyAdmin версии 4.4.x и выше. Для MySQL 5.1 — phpMyAdmin 4.0.x.
Решение
Решение проблемы заключается в приведении в соответствие версий СУБД и phpMyAdmin. Для начала, мы должны понять какая версия MySQL установлена, а затем — либо обновить одну из программ, либо понизить версию phpMyAdmin (чтобы не трогать MySQL).
Узнаем версию MySQL
Выполняем команду:
mysql -V
В ответ мы получим, примерно, следующее:
mysql Ver 14.14 Distrib 5.5.31, for FreeBSD9.1 (amd64) using 5.2
В данном примере используется версия 5.5.31, а значит для решения проблемы нужно обновить phpMyAdmin. В вашем случае может быть обратная ситуация, например, если версия MySQL будет 5.1.
Если нужно обновить или понизить версию phpMyAdmin
В случае использования свежей СУБД необходимо обновить phpMyAdmin. В случае использования устаревшего сервера баз данных, мы можем принять решение его не трогать — вместо этого просто использовать устаревшую версию phpMyAdmin. Так или иначе, набор действий, примерно, одинаковый.
1. Сначала находим каталог с phpMyAdmin. Путь до него можно найти в конфигурационном файле веб-сервера. Основные пути расположения phpMyAdmin:
- /usr/share/phpmyadmin
- /var/www/phpmyadmin
- /usr/local/www/phpmyadmin
2. Переносим содержимое каталога phpmyadmin в другую папку, например:
mv /usr/share/phpmyadmin /usr/share/old.phpmyadmin
3. Скачиваем нужную версию phpmyadmin с официального сайта.
4. Распаковываем содержимое архива в каталог хранения phpmyadmin.
Подробнее Как обновить phpMyAdmin.
Если нужно обновить MySQL
Необходимо обновить MySQL одним из нижеописанных способов.
Способ 1 (системными средствами)
В Linux на основе RPM, например, CentOS или Red Hat:
$ sudo yum update mysql
В Linux на основе DEB, например, Ubuntu или Debian:
$ sudo apt-get update mysql-server
В UNIX на основе BSD, например, FreeBSD:
# pkg upgrade mysql-server
Способ 2 (переустановкой mysql)
В этом случае, сначала сделайте дамп баз mysql. Он может и не пригодиться, но резервную копию всегда нужно иметь на случай критического сбоя.
Временное решение
Есть метод, с помощью которого можно быстро устранить проблему без необходимости обновлять программное обеспечение. Он не совсем правильный, так как подразумевает внесение правок в исходный код phpmyadmin.
Однако, если есть необходимость быстро решить проблему, то открываем следующий файл:
vi /usr/share/phpmyadmin/libraries/common.inc.php
* где путь /usr/share/phpmyadmin в вашем случае может быть другим.
И комментируем строки:
#if (PMA_MYSQL_INT_VERSION < $cfg['MysqlMinVersion']['internal']) {
# PMA_fatalError(
# __('You should upgrade to %s %s or later.'),
# array('MySQL', $cfg['MysqlMinVersion']['human'])
# );
#}
* в данном примере строки уже закомментированы (знак # в начале строки).
После открываем другой файл:
vi /usr/share/phpmyadmin/libraries/classes/DatabaseInterface.php
И также комментируем следующие строки:
#if (! empty($locale)) {
# $this->query("SET lc_messages = '" . $locale . "';", $link, self::QUERY_STORE);
#}
В чем была проблема?
Если вам удалось решить проблему, поделитесь своим опытом для других. Что помогло:
* в процентах показаны результаты ответов других посетителей.