2013-02-28 108 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',現在正確地顯示完整的錯誤描述。

我不確定是否有其他編碼問題可能導致其他功能丟失文本,但這至少可以解決我的問題。