Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 后台工作线程spi示例PostgreSQL_C_Postgresql_Postgresql 9.3_Postgresql 9.4 - Fatal编程技术网

C 后台工作线程spi示例PostgreSQL

C 后台工作线程spi示例PostgreSQL,c,postgresql,postgresql-9.3,postgresql-9.4,C,Postgresql,Postgresql 9.3,Postgresql 9.4,我正在尝试运行PostgreSQL文档中的演示后台工作程序示例。我从以下网站下载: 我能够编译代码并创建以下文件: “worker_spi.o”和“worker_spi.so” 然后,我使用:-\I worker\u spi--1.0.sql运行worker\u spi--1.0.sql。 最后,在连接到数据库之后,我创建了一个SQL文件中指定的扩展名。但是,我认为它不起作用。我需要把这个“.so”文件放到其他目录吗?非常感谢您的帮助。是的,.so文件需要安装到PKGLIBDIR中 您可以通过运

我正在尝试运行PostgreSQL文档中的演示后台工作程序示例。我从以下网站下载:

我能够编译代码并创建以下文件: “worker_spi.o”和“worker_spi.so”

然后,我使用:-\I worker\u spi--1.0.sql运行worker\u spi--1.0.sql。
最后,在连接到数据库之后,我创建了一个SQL文件中指定的扩展名。但是,我认为它不起作用。我需要把这个“.so”文件放到其他目录吗?非常感谢您的帮助。

是的,.so文件需要安装到PKGLIBDIR中

您可以通过运行“pg_config”来了解PKGLIBDIR是什么。例如,在使用PostgreSQL 9.4的Ubuntu系统上,pg_config将返回:

PKGLIBDIR=/usr/lib/postgresql/9.4/lib

此外,worker_spi--1.0.sql应该安装到SHAREDIR/extension中。在使用PostgreSQL 9.4的Ubuntu系统上,从pg_config返回的SHAREDIR是:

SHAREDIR=/usr/share/postgresql/9.4

安装worker_spi--1.0.sql的目录为:

/usr/share/postgresql/9.4/extension

将worker_spi--1.0.sql和worker_spi.so文件安装到正确的位置后,您应该能够执行:

创建扩展worker_spi

从任何数据库,并安装扩展


使用“\i worker\u spi--1.0.sql”不会将其作为一个扩展安装,而是作为一组独立的对象安装。

我不会跟踪链接中的链接。请发布显示您尝试过的内容的。而且,“我认为它不起作用”并不能充分描述这个问题。很抱歉给您带来困惑。我只是尝试运行给出的演示示例。他们最初创建了一个模式和一个表。然后通过后台工作程序删除和更新表中的行。在最初创建表时,也会打印一条日志消息。一旦运行SQL脚本,我就无法看到任何架构或表。另外,postgreSQL的默认日志文件位置是什么?您需要运行makeinstall,我不知道这是否适用于系统Postgres(不是通过代码签出构建的)。您可能不应该手动运行worker_spi,而是创建扩展。谢谢。但是我需要把worker_spi.so复制到其他postgres目录吗?谢谢你的解释。现在这更有意义了。我将各自的文件复制到以下位置:“/usr/pgsql-9.4/share/extension”和“/usr/pgsql-9.4/lib”然后重新启动了postgres服务器。最后,当我试图创建所需的扩展时,它没有被创建。还有什么我需要做的吗?还有另一个文件名为:worker\u spi.control。我需要把它放在其他目录吗?当你尝试创建扩展时,你看到了什么错误消息?谢谢你的解释。我现在可以创建一个扩展。也需要背景工作人员。我缺少的一个步骤是在配置文件中添加此后台工作程序的数据库名称。因此,在postgresql.conf中,必须添加worker_spi.database='databasename'。