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

使用mssql-async执行顺序异步SQL查询时第二个查询未执行

解决mssql-async中第二个await查询不执行的问题

你的代码里第二个查询完全不执行,大概率是第一个查询后续的代码抛出了未捕获的错误,导致程序中断,根本没走到第二个查询的逻辑。结合你的场景,给你几个排查和解决的方向:

1. 强制添加错误捕获与空值检查

第一个查询如果没找到匹配数据,row会是null,这时候访问row._IDENTIFICATION会直接抛出错误,程序终止。必须先加try/catch捕获错误,同时检查row是否存在:

try {
  const row = await db.getrow(
    "SELECT [_TURN_TYPE],[_IDENTIFICATION] FROM _HANDSON_STATIONS WHERE _DESCRIPTION = @desc",
    { desc: "Montagem Motor de Partida" }
  );

  console.log(row);

  // 先确认查询到数据,再提取属性
  if (!row) {
    console.error("没找到符合条件的工位记录");
    return;
  }

  const stationId = row._IDENTIFICATION;
  const turnType = row._TURN_TYPE;

  // 打印参数,确认值是否正确
  console.log("第二个查询参数:", { date: dateFormat, station: stationId, turn: turnType });

  const row1 = await db.getrow(
    "SELECT * FROM [_HANDSON_PRODUCTION_DATA] where _DATE = @date AND [_STATION_ID] = @station AND _TURN = @turn ORDER BY _INDEX ASC",
    { date: dateFormat, station: stationId, turn: turnType }
  );
  console.log(row1);
} catch (err) {
  console.error("查询过程出错:", err);
}

2. 验证第二个查询的参数与SQL有效性

把打印出来的参数直接代入SQL语句,在数据库客户端(比如SSMS)里执行,看是否能正常返回结果:

  • 检查dateFormat的格式是否和数据库_DATE字段的类型匹配(比如datetime类型需要YYYY-MM-DD HH:MM:SS格式)
  • 确认stationId和turnType的值在_HANDSON_PRODUCTION_DATA表中存在对应的记录

3. 检查数据库连接状态

如果上述步骤都没问题,可能是mssql-async的连接池出现了异常。可以尝试手动管理连接生命周期:

await db.connect();
try {
  // 这里放两个查询的完整代码
} finally {
  await db.close();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:03:27