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

knex在migration中执行查询生成无效SQL语句问题求助

Knex迁移场景查询生成无效SQL问题解决方案

问题根因

你遇到的SELECT * with no tables specified is not valid报错,是0.95.x~1.0.x区间部分版本Knex的解析缺陷:
在迁移上下文无参数调用knex.select()时,框架会错误将后续.from()对应的查询逻辑识别为子查询,最终生成外层套了冗余select (select *)的无效SQL。

修复方案

按推荐优先级排序可选择以下三种方案:

  • 直接省略冗余的select()调用,Knex默认会查询表中所有字段,该写法在全版本Knex中均可正常解析:
await knex('account_types').where({ key: t.key }).first()
  • 给select()方法显式传入查询字段参数,哪怕是通配符*即可修复解析异常:
await knex.select('*').from('account_types').where({ key: t.key }).first()
  • 如果上述两种改法仍不生效,排查当前迁移文件是否全局自定义过Knex查询构造器的默认逻辑,移除自定义的默认select配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:00