我在我的网站上安装了phpMyAdmin,但它确实有效。但是当我输入错误的查询时,它不会显示mysql错误消息,只显示错误代码。
1064 -
我期待以下内容:
1064 - 你的等等和错误......
没有错误信息,很难知道出了什么问题。
在我的php脚本中,我能够通过mysql_error()获取错误消息。但myAdmin没有显示任何内容。
我google了很多,但我找不到任何有用的东西。
如何让它显示错误消息?
有什么想法吗?
答案 0 :(得分:4)
根据您输入“#1064 - ”的事实判断,我只能在phpMyAdmin 3.3.9.2源中找到可能发生错误的两个位置。第一个是调用mysql_error
或mysqli_error
,具体取决于您的安装使用的后端。我看到你说mysql_error
工作正常;如果您在首次登录时获得的phpMyAdmin信息页面指示正在使用mysqli,您可能也想检查它。
但是如果mysql_error有效,那么问题似乎更可能出现在libraries / database_interface.lib.php中的phpMyAdmin的字符集转换函数PMA_DBI_convert_message
中。您可以通过在该函数的最顶部插入return $message;
,绕过其中的所有其他内容,轻松确认这一点。如果这样做(或多或少)有效,您可能想确定$server_language
和$GLOBALS['charset']
设置的内容;查看转化是使用iconv
,recode_string
,libiconv
还是mb_convert_encoding
;然后尝试找出为什么无法正确转换错误消息的原因。
答案 1 :(得分:1)
可能是Server无法正确访问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',
答案 2 :(得分:0)
你有没有看到:
$cfg['Error_Handler']['display']
布尔是否显示PHP的错误。
$cfg['Error_Handler']['gather']
布尔是否从PHP收集错误。
答案 3 :(得分:0)
有同样的问题,可以通过在我的浏览器中为phpmyadmin禁用FireFox附加uBlock(版本:Origin 1.25.2)来解决。