开发者

PHPMyadmin does not show mysql error messages

开发者 https://www.devze.com 2023-02-05 06:28 出处:网络
I installed phpMyAdmin on my site and it works. But when I mistype a query it does not show the mysql error message only the error code.

I installed phpMyAdmin on my site and it works. But when I mistype a query it does not show the mysql error message only the error code.

1064 -

I expect the following:

1064 - You have and error in your blah blah...

Without an error message it's difficult to know what's wrong.

In my php scripts I'm able to get the error message via mysql_error(). But myAdmin shows nothing.

I googled a lot but I didn't find anything useful.

How can I make开发者_运维问答 it show the error messages?

Any ideas?


Judging by the fact that you get "#1064 -" as output, I can find only two places in the phpMyAdmin 3.3.9.2 source where the error could be occurring. The first is in the call to mysql_error or mysqli_error, depending on which backend your installation is using. I see you said that mysql_error works fine; if the phpMyAdmin information page you get when first logging in indicates that mysqli is being used, you might want to check that too.

But if mysql_error works, it seems more likely that the problem is in phpMyAdmin's character set conversion function PMA_DBI_convert_message in libraries/database_interface.lib.php. You can confirm this easily enough by inserting return $message; at the very top of that function, bypassing everything else in there. If that makes it (more or less) work, you'd probably want to determine what $server_language and $GLOBALS['charset'] are getting set to; see if the conversion is using iconv, recode_string, libiconv, or mb_convert_encoding; and then try to work out why whichever of those is failing to convert the error message properly.


Probably, Server cannot correctly access LOCALE settings. It happens on chroot-ed / chjail-ed environments or poor configuration.

Based on @Anomie answer, I made a workaround.

For phpmyadmin 4.4.3 change the Fallback setting in file libraries/DatabaseInterface.class.php

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

For some older versions, edit file libraries/database_interface.lib.php and set array $encodings => 'english' value to UTF-8 (~line 273),

'english'       => 'UTF-8', //'latin1',


Did you see :

$cfg['Error_Handler']['display'] boolean

Whether to display errors from PHP or not.

$cfg['Error_Handler']['gather'] boolean

Whether to gather errors from PHP or not.

In the docs ?


Had the same problem, which was solved by disabling the FireFox add-on uBlock (version: Origin 1.25.2) in my browser for phpmyadmin.

0

精彩评论

暂无评论...
验证码 换一张
取 消