我使用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:当我创建新的数据库并尝试运行相同的查询时,它将执行,没有任何错误。
1条答案
按热度按时间xtupzzrd1#
你得到这个错误是因为扩展名
vector
的共享库(也就是vector.so
)没有在当前会话中加载。在加载库之前,hnsw.ef_search
没有被定义并被PostgreSQL视为“占位符参数”。只有超级用户可以使用ALTER DATABASE
来设置占位符参数的值。在当前会话中加载
vector.so
后,hnsw.ef_search
会被重新定义为常规参数。因此,您应该从使用vector
数据类型的表中调用扩展SELECT
中的函数,或者执行其他操作,使vector.so
加载到当前会话的后端进程中。然后在同一会话中运行ALTER DATABASE
语句,它应该会成功