Postgresql的网页说pgcrypto包含在Postgresql 9.1的下载中 . 但是,没有pgcrypto.sql文件 . 如果我查看share \ extension目录,则有3个文件:
pgcrypto - 1.0.sql pgcrypto - unpackaged - 1.0.sql pgcrypto.control
如果我尝试安装
\ i pgcrypto - 1.0.sql
我收到一堆这样的错误:
psql:pgcrypto--1.0.sql:194: ERROR: could not access file "MODULE_PATHNAME": No such file or directory
也许share \ extension中的文件是由share \ contrib \ pgcrypto.sql文件(不存在)调用的 .
在Postgresql 8.4上的linux上,我必须安装contrib包来获取pgcrypto.sql . 我必须在Windows上为Postgresql 9.1安装另一个软件包吗?
谢谢 .
4 回答
在v9.1中,安装额外模块的方式已更改,现在称为EXTENSIONS,并使用特殊的SQL语句CREATE EXTENSION进行安装 .
1.添加扩展名: create extension pgcrypto
2.检查扩展名: select * from pg_available_extensions
3.使用扩展名: select ''||encode(digest('test', 'sha1'), 'base64');
我试图转换包含其SHA1功能的MySQL脚本 . 在最后执行“create extension pgcrypto”命令之后,PostgreSQL文档中的示例工作得很好(至少到目前为止我尝试过的所有值) .
这是SHA1函数:
应该注意的是,我使用PgAdminIII工具和64位Windows 7在PostgreSQL 9.1上完成了所有这些工作 .
如果你需要使用一些扩展,那么例如pgcrypto:来自窗口查询的“CREATE EXTENSION pgcrypto”,但是说这个脚本必须在你需要使用这个扩展的数据库中执行非常重要,完成脚本以验证它是否已安装,请在数据库中检查pgAdmin扩展名seccion .
我希望这有帮助 .