phpMyAdmin截断错误消息

时间:2013-02-28 12:30:52

标签: php mysql phpmyadmin

当我使用phpMyAdmin执行查询时,返回的任何错误都缺少错误描述。返回的错误只是:

#1064 -

phpMyAdmin missing error description

...而不是预期的那个:

#1064 - You have an error in your SQL syntax; check the manual...

我的PHP代码正在使用mysql_error()正确返回MySQL错误描述。

我花了两天时间在Google和SO上搜索答案,找不到解决方案。 因此,为了将来我自己和其他任何寻找这个问题答案的人参考,我将在这里回答。如果您有更好的解决方案,请添加您的答案。

1 个答案:

答案 0 :(得分:1)

我最终找到了一个相关的问题PHPMyadmin does not show mysql error messages。我将说明我不明白如何用这个答案解决问题。我注意到@anomie声明:

  

如果mysql_error正常工作,那么问题似乎更可能出在php / database_interface.lib.php中phpMyAdmin的字符集转换函数PMA_DBI_convert_message

我在libraries / database_interface.lib.php中找到了设置编码的部分:

function PMA_DBI_convert_message($message)
{
    // latin always last!
    $encodings = array(
        'japanese'      => 'EUC-JP', //'ujis',
        'japanese-sjis' => 'Shift-JIS', //'sjis',
        'korean'        => 'EUC-KR', //'euckr',
        'russian'       => 'KOI8-R', //'koi8r',
        'ukrainian'     => 'KOI8-U', //'koi8u',
        'greek'         => 'ISO-8859-7', //'greek',
        'serbian'       => 'CP1250', //'cp1250',
        'estonian'      => 'ISO-8859-13', //'latin7',
        'slovak'        => 'ISO-8859-2', //'latin2',
        'czech'         => 'ISO-8859-2', //'latin2',
        'hungarian'     => 'ISO-8859-2', //'latin2',
        'polish'        => 'ISO-8859-2', //'latin2',
        'romanian'      => 'ISO-8859-2', //'latin2',
        'spanish'       => 'CP1252', //'latin1',
        'swedish'       => 'CP1252', //'latin1',
        'italian'       => 'CP1252', //'latin1',
        'norwegian-ny'  => 'CP1252', //'latin1',
        'norwegian'     => 'CP1252', //'latin1',
        'portuguese'    => 'CP1252', //'latin1',
        'danish'        => 'CP1252', //'latin1',
        'dutch'         => 'CP1252', //'latin1',
        'english'       => 'CP1252', //'latin1',
        'french'        => 'CP1252', //'latin1',
        'german'        => 'CP1252', //'latin1',
    );

我将英语行更改为'english' => 'UTF-8',,现在可以正确显示完整的错误说明。

我不确定是否还有其他编码问题导致其他功能丢失文字,但这至少解决了我的问题。