knex 查询与表名周围的引号
Posted
技术标签:
【中文标题】knex 查询与表名周围的引号【英文标题】:knex query with quotes around table name 【发布时间】:2018-07-13 10:40:01 【问题描述】:我有一个查询如下,它返回代码不为空的用户信息
从代码不为空的“dev.user”中选择名称、年龄
返回预期输出
我正在做的事情
knex("user").select('name','age').whereNotNull('code')
它返回空!
调试查询返回如下
从“用户”中选择“姓名”、“年龄”,其中“代码”不为空 knex("dev.user").select('name','age').whereNotNull('code')
调试查询返回如下
从“dev”中选择“name”、“age”、“user”,其中“code”不为空
首先,当我初始化 knex 时,我设置了第二个不起作用的模式,即使我提供模式它正在生成查询为“dev”。“user”而不是“dev.user”
任何建议都会有所帮助
【问题讨论】:
您找到解决方案了吗?我有名为“a.b”的视图,knex 将生成 'a'.'b' 而不是 'a.b'。 @EricRicher 我记得使用 known.raw 函数和表名是根据运行的环境生成的。我相信这个 sud 现在有一些优雅的解决方案...... 在当前版本中找不到优雅的解决方案。最终将视图重命名为“a_b”。感谢您的回复。 【参考方案1】:从文档看来,您应该使用.withSchema()
。 (see link)
注意:标识符语法没有选择架构的地方,所以如果你 正在执行 schemaName.tableName,查询可能会呈现错误。采用 .withSchema('schemaName') 代替。
应该是:
knex("user")
.withSchema("dev")
.select('name','age').whereNotNull('code')
我自己不必包含架构,所以祝你好运。
加里。
【讨论】:
以上是关于knex 查询与表名周围的引号的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Oracle 12c 查询需要在表周围加上双引号 [重复]