2013-02-28 103 views
1

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

#1064 - 

phpMyAdmin missing error description

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

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

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

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

+0

可以请你发送查询 – Madhav 2013-02-28 12:33:11

+0

@Madhav - 问题不是关于具体的查询,而是关于phpMyAdmin截断错误信息。 (他只是要求提供答案,Stack Overflow实际上鼓励了这个答案。) – 2013-02-28 12:36:46

回答

1

我最终发现相关的问题PHPMyadmin does not show mysql error messages。我会说,我不明白如何解决这个问题的答案。我确实注意到@anomie状态:

如果mysql_error工作,似乎更容易,问题是在图书馆phpMyAdmin的的字符集转换功能PMA_DBI_convert_message/database_interface.lib.php

我发现这在库部分/ 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',现在正确地显示完整的错误描述。

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