psql 9.5:gen_random_uuid() 不工作

d9k*_*d9k 18 pgcrypto postgresql-9.5 uuid

SELECT gen_random_uuid()

产生输出

ERROR:  function gen_random_uuid() does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

CREATE EXTENSION pgcrypto;在选定的数据库上运行并SELECT gen_random_bytes(1)完美运行(gen_random_bytes不适用于pgcrypto未手动创建扩展的其他数据库)。

% psql --version
psql (PostgreSQL) 9.5.3
Run Code Online (Sandbox Code Playgroud)

Ubuntu 版本是 16.04。

小智 32

您可以检查函数是否定义使用

select pg_get_functiondef(to_regproc('gen_random_bytes'));
select pg_get_functiondef(to_regproc('gen_random_uuid'));
Run Code Online (Sandbox Code Playgroud)

或者:

select * from pg_proc where proname like 'gen_random_%';
Run Code Online (Sandbox Code Playgroud)

如果两个函数都没有定义,那么你可能在创建扩展时遇到了错误 - 只需删除它并重新创建:

drop extension pgcrypto;
CREATE EXTENSION pgcrypto;
Run Code Online (Sandbox Code Playgroud)

  • 我使用了 `CREATE IF NOT EXISTS` 并且出现了这个错误。因此,`DROP EXTENSION pgcrypto` 和`CREATE EXTENSION pgcrypto` 有所帮助。谢谢你。 (2认同)