phpMyAdmin 和 SQLBuddy 中的 SQL 查询问题

Posted

技术标签:

【中文标题】phpMyAdmin 和 SQLBuddy 中的 SQL 查询问题【英文标题】:SQL Query problem in phpMyAdmin and SQLBuddy 【发布时间】:2021-04-02 00:11:14 【问题描述】:

我在我的网络服务器上使用 phpMyAdmin,它安装了 VirtualMin 和 PHP 7.3(我也尝试过以前的版本)。

我遇到的问题是 phpMyAdmin 在运行较大(不是大量)查询时会出错。例如,一个有 3 行的表,运行 select * from tbl1 GROUP BY SUBSTRING(extension,1,5); 会给出这个错误:

Error in processing request
Error code: 403
Error text: error (rejected)
It seems that the connection to server has been lost. Please check your network connectivity and server status.

所以我在网上看了一下,有人说改用 SQLBuddy,所以我试过了,完全相同的查询给出了这个错误

There was an error receiving data from the server.

【问题讨论】:

只是一个旁注:从 SQL 标准的角度来看,这个查询很可能是不正确的(除非列:扩展名是 PK/UQ)。相关:Group by clause in mysql 请提供SHOW CREATE TABLE tbl1和表格的3行。 还有,什么版本的 MySQL?从技术上讲,GROUP BY 格式不正确。阅读“仅完整分组依据”。 试试mysql命令行工具。 您可以尝试使用MySQL Workbench,我们不会遇到超时、大小等问题。 【参考方案1】:

上下文确实可能是您对“*”的查询,所有字段。 “分组依据”更多地用于聚合目的:min()、max()、avg() 等。对于要获取聚合的内容,您没有上下文,而是按扩展的子字符串进行分组。如果您可以提供更多详细信息来说明您的数据内容是什么,以及为什么您认为 GROUP BY 与 DISTINCT 相比,可能会提供更好的答案。

现在,也就是说,在不知道更多数据的情况下,我将从做一个简单的 count(*) 开始,它为任何合格的记录返回 1。可能就这么简单。

select 
      SUBSTRING(extension,1,5),
      count(*) NumRecordsWithThisExtension
   from 
      tbl1 
   GROUP BY 
      SUBSTRING(extension,1,5);

【讨论】:

【参考方案2】:

问题很可能是您尝试使用 group by 选择 *:

你能不能试着把它改成这样:

'select SUBSTRING(extension,1,5) as test from tbl1 GROUP BY SUBSTRING(extension,1,5);'

【讨论】:

【参考方案3】:

你可以试试下面

    将浏览器中的地址从“localhost”更改为“127.0.0.1”。 增加 php.ini 文件中的 post_max_size / memory_limit。

【讨论】:

我将 post_max_size 增加到 200M 但仍然没有 我没有使用 localhost,它托管在云服务器上 另外,它可以通过服务器运行的 Virtualmin 正常工作 有没有在php.ini中增加memory_limit 最大内存分配也增加到200M以供测试

以上是关于phpMyAdmin 和 SQLBuddy 中的 SQL 查询问题的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 WAMP 中 phpMyAdmin 中所说的语言?

text 用于本地远程服务器sqlbuddy.com的MysqlAdmin的替代方案

正则表达式 - 匹配整个字符串,除非 [重复]

WAMP 2.5 "FORBIDDEN" error

如何在 SQL Buddy 中使用外键?

PHPMYADMIN 中的过程和触发器