phpMyAdmin 截断错误消息

标签 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 错误描述。

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

最佳答案

终于找到一个相关的问题PHPMyadmin does not show mysql error messages .我会声明我不明白如何用这个答案解决问题。我确实注意到@anomie 指出:

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

我在设置编码的 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', 现在可以正确显示完整的错误描述。

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

关于phpMyAdmin 截断错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135618/

相关文章:

php - 删除行结果 SQL 查询

php - id unique 的计数显示

mysql - SQL JOIN 和从两个表查询的区别

php - 在多个表中使用关键字进行搜索?

php - 当我导出我的表时,仍未完成停止

php - 从多个表中选择顺序和组

php - 爬取页面的不同语言,这取决于php中的 session

php - 在 php 中使用 gmail api 发送带附件的邮件

php - php 的 mysql_real_escape_string() 的等效 javascript 代码是什么?

mysql - 无法登录新安装的phpmyadmin