PHPMyadmin не показывает сообщения об ошибках mysql - PullRequest
3 голосов
/ 19 января 2011

Я установил phpMyAdmin на свой сайт, и он работает. Но когда я неправильно набираю запрос, он не показывает сообщение об ошибке mysql, а только код ошибки.

1064 -

Я ожидаю следующего:

1064 - у вас есть и ошибка в вашем бла-бла ...

Без сообщения об ошибке трудно понять, что не так.

В моих php-скриптах я могу получить сообщение об ошибке через mysql_error (). Но myAdmin ничего не показывает.

Я много гуглил, но ничего полезного не нашел.

Как я могу заставить его отображать сообщения об ошибках?

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 06 марта 2011

Судя по тому, что вы получаете "# 1064 -" в качестве вывода, я могу найти только два места в источнике phpMyAdmin 3.3.9.2, где может возникнуть ошибка. Первый заключается в вызове mysql_error или mysqli_error, в зависимости от того, какой сервер использует ваша установка. Я вижу, вы сказали, что mysql_error отлично работает; если информационная страница phpMyAdmin, которую вы получаете при первом входе в систему, указывает на то, что mysqli используется, вы можете также проверить это.

Но если mysql_error работает, то, скорее всего, проблема в функции преобразования набора символов phpMyAdmin PMA_DBI_convert_message в библиотеки / database_interface.lib.php. Вы можете легко это подтвердить, вставив return $message; в самый верх этой функции, минуя все остальное. Если это заставляет его (более или менее) работать, вы, вероятно, захотите определить, какие значения $server_language и $GLOBALS['charset'] будут установлены; посмотрите, использует ли преобразование iconv, recode_string, libiconv или mb_convert_encoding; и затем попытайтесь выяснить, почему ни один из них не может правильно преобразовать сообщение об ошибке.

1 голос
/ 21 апреля 2014

Возможно, сервер не может правильно получить доступ к настройкам LOCALE. Это происходит в средах chroot-ed / chjail-ed или в плохой конфигурации.

Основываясь на ответе @Anomie, я нашел обходной путь.

Для phpmyadmin 4.4.3 изменить параметр отката в файле libraries/DatabaseInterface.class.php

 /* Fallback to CP1252 if we can not detect */
        $encoding = 'UTF-8';

Для некоторых более старых версий отредактируйте файл libraries/database_interface.lib.php и установите array $encodings => 'english' значение до UTF-8 (~ строка 273),

'english'       => 'UTF-8', //'latin1',
0 голосов
/ 08 марта 2011

Вы видели:

$cfg['Error_Handler']['display'] логическое

Отображать ли ошибки из PHP или нет.

$cfg['Error_Handler']['gather'] логическое

Собирать ли ошибки из PHP или нет.

В документах ?

...