我正在尝试使用TrigramSimilarity
进行全文搜索。我在PostgreSQL中激活了pg\u trgm
扩展。并添加了django。contrib。我安装的应用程序中的postgres
。但当我尝试查询时
blog.objects.annotate(similarity=TrigramSimilarity('name', 'abc'),).filter(similarity__gt=0.3).order_by('-similarity')
但它给了我一个错误
psycopg2。编程错误:函数相似性(字符变化,未知)不存在第1行:。。。其他“\u 2”,“blog\u mod”,相似性…^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
为什么会发生此错误。请帮帮我。
因为(我不知道为什么?)相反,它将与字符串一起工作,或者与SearchVectorField都不工作,而是使用常规字段。
如果pg_trgm扩展是在公共模式中创建的,那么可以在另一个模式中获得错误。这对我很有用:
select public.similarity('foo','bar');
然而,如果我尝试Szymon的解决方案,Postgres告诉我扩展已经存在。我还没找到留档。
错误表示扩展尚未安装。我不知道为什么会这样。可能您没有在用于django的数据库中安装扩展?
可以从django代码执行原始sql查询。这将确保您以正确的数据库/架构为目标。
from django.db import connection
with connection.cursor() as cursor:
cursor.execute('CREATE EXTENSION IF NOT EXISTS pg_trgm')
您还可以使用Django的自定义TrigramExtension
迁移。创建扩展查询是相同的。但是,如果您在同样需要启用pg_trgm的测试数据库上运行集成测试,那么迁移是一个好主意。
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/operations/#database-迁移操作
因此,im在将数据库从Oracle迁移到PGSql项目中,现在im修复了一些查询.我有一个这样的错误: 并且我在这个字符串生成器上发现了来自控制台的nvl错误
我使用DBEaver在PostgreSQL中创建了一个存储过程。我正试图通过从DBeaver调用过程将数据插入到表中。但这给了我一个错误 SQL错误[42883]:错误:函数public.proc_insert_test(integer,unknown,unknown,unknown,unknown,unknown,timestamp with time zone,integer,integer,
这里是上面代码的错误-> 没有与给定的名称和参数类型匹配的函数。您可能需要添加显式类型转换。
我在PostgreSQL中有一个存储过程,如下所示: 我的数据库中有带精度值的类型。对于numeric,我只需要使用。这条路对吗?
代码中的以下语句给了我一个错误: 是Postgres中的用户定义聚合函数,定义为: 错误消息为:
但这段代码有一个错误: 错误:函数log(数值,双精度)不存在行1:select log(2.7,c) 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。 查询:select log(2.7,c)context:pl/pgsql function inline_code_block line 11 at SQL语句SQL state:42883