postgresql Postgres在数据库级别设置参数时出错

ncgqoxb0  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(203)

我使用pg_dump从一个postgres数据库转储数据库,并使用pg_restore恢复到另一个postgres数据库(在RDS中)。但当时我忘记使用--no-owner。恢复后,我将所有者更改为postgres用户。我使用pgvector扩展名,当我尝试在数据库级别设置配置参数hnsw.ef_search时,它给了我错误permission denied to set parameter 'hnsw.ef_search'
在数据库级别设置参数的命令

ALTER DATABASE mydb SET hnsw.ef_search = 500;

字符串
请帮助我解决这个问题。提前感谢。
PS:当我创建新的数据库并尝试运行相同的查询时,它将执行,没有任何错误。

xtupzzrd

xtupzzrd1#

你得到这个错误是因为扩展名vector的共享库(也就是vector.so)没有在当前会话中加载。在加载库之前,hnsw.ef_search没有被定义并被PostgreSQL视为“占位符参数”。只有超级用户可以使用ALTER DATABASE来设置占位符参数的值。
在当前会话中加载vector.so后,hnsw.ef_search会被重新定义为常规参数。因此,您应该从使用vector数据类型的表中调用扩展SELECT中的函数,或者执行其他操作,使vector.so加载到当前会话的后端进程中。然后在同一会话中运行ALTER DATABASE语句,它应该会成功

相关问题