我crypt()在我的一个函数中使用了哈希用户密码。但是我在第二天启动我的电脑时观察到,同样的事情失败了,因为密码功能在重新启动时变得不可用。它显示消息,如功能gen_salt()/crypt()未知或未定义。我执行了create extension pgcrypto;一次,它开始工作。
如何在生产环境中处理这个?即使 db 重新启动,有没有办法使该模块在 db 中永久可用?
或者我是否必须指示服务器管理器运行此命令以防他们需要重新启动数据库服务器?
或者我可以在函数本身中编写此语句,以便每次使用加密函数之前都会创建扩展?
此外,我们正在使用 db 的读取副本,它不允许执行此“创建扩展”语句,因为只有读取权限。那么如何在这样的只读环境中使用这种加密功能呢?
postgresql pgcrypto read-only-database postgresql-extensions
我正在使用 pg_trgm 运行查询,但在使用符号差异进行搜索时得到很多 1 匹配。我有以下查询:
SELECT my_column, similarity('$ Hello', my_column) AS sml
FROM my_table
WHERE my_column % '$ Hello'
ORDER BY sml DESC, my_column;
Run Code Online (Sandbox Code Playgroud)
在 中my_table,我有以下内容:
- Hello
? Hello
| Hello
$ Hello
! Hello
!? Hello
Run Code Online (Sandbox Code Playgroud)
它们都以 1 的相似性匹配返回。我是否需要转义“$”或类似的内容?