如何在MacOS上为PostgreSQL 13安装pgcrypto扩展
解决Mac上PostgreSQL 13启用pgcrypto扩展的问题
一、Mac上搞定postgres-contrib(含pgcrypto)的方法
- 如果你是用Homebrew装的PostgreSQL 13:
正常情况下,brew install postgresql@13会自动包含contrib组件,不需要单独安装。如果已经装了但扩展没生效,执行brew reinstall postgresql@13重新安装,确保contrib被正确部署。 - 验证扩展是否存在:
打开终端进入psql控制台(命令:psql -d 你的项目数据库名),执行查询:SELECT * FROM pg_available_extensions WHERE name = 'pgcrypto';,能查到结果就说明扩展已经在系统里了。 - 手动创建扩展:
要是迁移里的enable_extension "pgcrypto"一直失败,先手动在psql里执行CREATE EXTENSION IF NOT EXISTS pgcrypto;,创建成功后再跑Rails迁移就行。
二、替代方案:绕开迁移的enable_extension语句
直接把迁移文件里的enable_extension "pgcrypto"注释掉,先手动在psql里创建好扩展,之后再运行迁移。后续只要数据库里已经有这个扩展,迁移不会因为这行注释出问题。
三、关于安装旧版PostgreSQL的问题
PostgreSQL从9.4开始就把pgcrypto归在contrib组件里,不管是旧版还是13版,都需要确保contrib组件安装到位。旧版PostgreSQL并不会默认“预装”好这个扩展,和13版的要求是一样的,所以装旧版并不能直接解决问题,核心还是要确保contrib组件正确安装并手动启用扩展。
内容的提问来源于stack exchange,提问作者Gabriel Oliveira
相关产品推荐
相关产品推荐

