我在尝试创建基于C的PostgreSQL扩展时遇到了一个问题。我的GitHub repository中有可用的扩展代码,我正在尝试使用PostgreSQL中的CREATE EXTENSION
命令加载它。但是,我遇到了以下错误:
ERROR: could not load library "/Users/spartacus/Desktop/GSoC/CODE/pg_cext": dlopen(/Users/spartacus/Desktop/GSoC/CODE/pg_cext, 0x000A): tried: '/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (not a file), '/System/Volumes/Preboot/Cryptexes/OS/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (no such file), '/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (not a file)
字符串
我已经验证了扩展文件存在于给定的位置,并且还设置了必要的权限。尽管如此,扩展没有加载,错误仍然存在。
解决问题的步骤:
1.我已经检查了扩展文件的文件权限,它们似乎是正确的。
ls -l /Users/spartacus/Desktop/GSoC/CODE/pg_cext
total 80
-rw-r--r--@ 1 spartacus staff 139 Jul 15 12:24 Makefile
-rw-r--r--@ 1 spartacus staff 100 Jul 15 12:27 pg_cext--1.0.0.sql
-rw-r--r--@ 1 spartacus staff 227 Jul 15 12:27 pg_cext.c
-rw-r--r--@ 1 spartacus staff 157 Jul 15 11:56 pg_cext.control
-rw-r--r-- 1 spartacus staff 984 Jul 17 09:14 pg_cext.o
-rwxr-xr-x 1 spartacus staff 16951 Jul 17 09:14 pg_cext.so
型
1.我已经尝试重新加载PostgreSQL,但错误仍然发生。
1.我已经确认扩展文件存在于指定的位置,但错误消息表明并非如此。
我的环境:
- PostgreSQL版本:postgres(PostgreSQL)15.0
- 操作系统:MacOS [M1芯片]
- Extension Code的
有人能帮我解决这个问题吗?提前感谢您的帮助!
3条答案
按热度按时间dz6r00yl1#
试着从这个Manual开始,它将帮助你制作第一个扩展,你也可以纠正你的错误。
irtuqstp2#
请执行以下操作:1.检查文件权限:
字符串
1.验证文件路径是否正确,然后设置DYLD_LIBRARY_PATH:
型
1.在CREATE EXTENSION命令中使用绝对路径。
1.使用以下命令重新启动PostgreSQL
型
1.检查PostgreSQL日志以获取更多详细信息&确保扩展是针对PostgreSQL 15.0和M1架构编译的。
我希望它能起作用。
Apache-Age #postgresql
tktrz96b3#
我在开发C扩展(PostgreSQL)时也遇到了一些错误。
任何扩展名都有3个主文件。
1.c文件
1..控制文件
1..sql文件
在开发扩展时,请确保您的系统正在运行相互兼容的正确版本。
我希望这能回答我们的问题。
参考=> Manual。