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

Flutter中使用mysql1包执行MySQL select查询无效

问题排查与解决方案

1. 确认数据库连接目标(移动端场景必看)

如果在手机模拟器/真机上运行Flutter,localhost指向的是设备本身,而非运行MySQL的电脑:

  • Android模拟器:将_host改为10.0.2.2
  • iOS模拟器:可直接用localhost或127.0.0.1
  • 真机:使用电脑的局域网IP地址(比如192.168.1.100)
    同时确保MySQL允许远程连接:
  • 修改MySQL配置文件的bind-address为0.0.0.0
  • 执行授权命令:GRANT ALL ON mydb.* TO 'root'@'%' IDENTIFIED BY 'mypassword';,再运行FLUSH PRIVILEGES;

2. 重构异步代码,避免await与then混用

原代码混合使用await和then易导致逻辑混乱,重构后更清晰:

String questionText = "";
var db = MySql();

void getData(String questionID) async {
  final conn = await db.getConnection();
  try {
    // 插入时指定字段名,避免表结构变动引发错误
    await conn.query(
      "INSERT INTO questions (col1, col2, col3, col4, col5, col6, col7) VALUES (?, ?, ?, ?, ?, ?, ?)",
      ['a', 'a', 'a', 'a', 'a', 'a', '2']
    );
    
    final results = await conn.query("SELECT * FROM questions");
    print(results);
    
    if (results.isNotEmpty) {
      // 注意:循环会覆盖questionText,最终仅保留最后一行的第一个字段
      setState(() {
        questionText = results.last[0];
      });
    } else {
      print("no data");
      setState(() {
        questionText = "no data";
      });
    }
  } catch (e) {
    print("数据库操作异常: $e");
  } finally {
    // 关闭连接,避免资源泄漏
    await conn.close();
  }
}

3. 显式开启自动提交事务

在连接配置中设置autoCommit,确保插入操作立即生效:

class MySql {
  static String _host = "localhost",
                _user = "root",
                _password = "mypassword",
                _db = "mydb";
  static int _port = 3306;

  MySql();

  Future<MySqlConnection> getConnection() async {
    var settings = ConnectionSettings(
      host: _host,
      port: _port,
      user: _user,
      password: _password,
      db: _db,
      autoCommit: true, // 显式开启自动提交
    );

    return await MySqlConnection.connect(settings);
  }
}

4. 验证数据是否实际存入数据库

用MySQL客户端(如MySQL Workbench)连接目标数据库,执行SELECT * FROM questions:

  • 若没有数据,说明插入操作实际失败,需检查表结构与插入字段是否匹配,或通过错误捕获查看具体异常
  • 若有数据但Flutter查询不到,回到第一步确认连接的数据库是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:05:41