【问题标题】:Postgres CITEXT working when querying in DBeaver but not working when calling through an API in postman or swaggerPostgres CITEXT 在 DBeaver 中查询时工作,但在 postman 或 swagger 中通过 API 调用时不工作
【发布时间】:2021-05-12 23:48:25
【问题描述】:

我有一个数据库,其中有一个 CITEXT 数据类型的列,以允许不区分大小写的搜索。当我测试查询时 select * from DB where description = 'tEsT';它以不区分大小写的方式返回我想要的内容。

但是当我有一个使用该列的 API 调用并进行不区分大小写的搜索时,它根本不起作用。这很奇怪,因为它在直接查询数据库时可以工作,但在通过 API 调用并且服务正在调用时却不行。

如果需要,我可以提供更多信息。

【问题讨论】:

  • 在这两种情况下您是否使用相同的提供程序(驱动程序)?
  • 同一个提供者是什么意思?像 search_path 或 schema?我将如何检查数据库以检查我的服务。
  • 连接字符串。请参阅以下顶部:connectionstrings.com/postgresql
  • 它是否在 Postgres 的函数中?
  • CITEXT 是一种数据类型,它对正在检索的值和数据库中的值都使用较低的值来检查是否区分大小写。是的,它们在相同的驱动程序和架构上。 @jdweng​​span>

标签: c# postgresql


【解决方案1】:

在这种情况下的答案是添加扩展名时的 CITEXT

create extension if not exist citext;

它默认为公共模式。因此,当 API 使用我们的架构调用服务时,它无法正常工作。

alter extension citext schema actualCorrectSchema

您还可以通过将可重定位功能更改为 true 而不是 false 来更改扩展程序以启用它在任何架构之间跳转的能力。

感谢大家的回答和帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2021-09-13
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多