You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询返回空响应求助(建表正常其他操作无响应)

MySQL查询返回空响应但CREATE TABLE正常的排查与解决

我使用Dart的mysql1包连接MySQL数据库时,执行CREATE TABLE语句能成功创建新表,但发送查询(比如SELECT)时返回空响应,其余查询操作也没有任何响应。以下是测试代码:

import 'package:mysql1/mysql1.dart';

void main() async {
  final settings = ConnectionSettings(
    host: '10.0.2.2',
    port: 3307,
    user: 'root',
    password: '#alisher_2001\$',
    db: 'mbsupermarket',
  );

  final conn = await MySqlConnection.connect(settings);
  var searchId = 4;
  var results = await conn.query('SELECT filial_nomi FROM mbsupermarket.filial WHERE id_supermarket = ?',
      [searchId]);

  for (var row in results) {
    print(row[0]);
  }
  
  await conn.close();
}

排查与解决步骤

  • 先验证数据库中是否存在对应数据
    直接在MySQL客户端(命令行、Workbench等)执行相同查询:SELECT filial_nomi FROM mbsupermarket.filial WHERE id_supermarket = 4;,如果数据库里本身没有id_supermarket=4的数据,代码返回空是正常的,这时候需要检查数据插入是否正确。

  • 检查连接配置细节

    • 确认端口号:代码中用的是3307,MySQL默认端口是3306,如果你没修改过MySQL端口配置,可能是端口填错了。虽然CREATE TABLE能成功,但也不排除连接到了其他实例的可能,务必和实际数据库端口一致。
    • 验证密码正确性:密码里的$已经用\$转义,符合Dart字符串规则,但可以用相同密码在客户端登录数据库,确认密码无误。
  • 添加错误捕获与日志输出
    原代码没有错误处理,可能查询过程中出现异常但未被捕获,导致看起来“无响应”。修改代码添加try-catch,打印关键信息:

    import 'package:mysql1/mysql1.dart';
    
    void main() async {
      MySqlConnection? conn;
      try {
        final settings = ConnectionSettings(
          host: '10.0.2.2',
          port: 3307,
          user: 'root',
          password: '#alisher_2001\$',
          db: 'mbsupermarket',
        );
    
        conn = await MySqlConnection.connect(settings);
        print('数据库连接成功');
        
        var searchId = 4;
        var results = await conn.query(
            'SELECT filial_nomi FROM mbsupermarket.filial WHERE id_supermarket = ?',
            [searchId]);
    
        print('查询结果条数:${results.length}');
        for (var row in results) {
          print(row[0]);
        }
      } catch (e) {
        print('执行出错:$e');
      } finally {
        if (conn != null) {
          await conn.close();
          print('数据库连接已关闭');
        }
      }
    }
    

    运行后查看控制台输出,通过结果条数和错误信息,就能快速定位是无数据还是查询异常。

  • 检查表名、字段名的大小写
    MySQL在Linux下默认对表名、字段名大小写敏感,Windows下则不敏感。确认代码中的filial表名、id_supermarket字段名和数据库中的实际名称完全一致,没有大小写错误。

  • 确认用户权限
    虽然CREATE TABLE能成功,但仍需确认当前用户拥有SELECT权限。可以在MySQL客户端执行:SHOW GRANTS FOR 'root'@'10.0.2.2';(替换为你的连接host),查看权限列表中是否包含SELECT权限。

内容的提问来源于stack exchange,提问作者Alisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:45:23