Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Postgresql Postgres:如何在数据库启动后立即启动一个过程?_Postgresql - Fatal编程技术网

Postgresql Postgres:如何在数据库启动后立即启动一个过程?

Postgresql Postgres:如何在数据库启动后立即启动一个过程?,postgresql,Postgresql,我有几十个未标记的表,doc说一个未标记的表在崩溃或不干净的关机后会自动被截断 基于此,我需要在数据库开始后检查一些表,看看它们是否为空,并对此采取一些措施 所以简而言之,我需要在数据库启动之后执行一个过程 怎样做才是最好的方法 PS:我在Ubuntu12.04服务器上运行Postgres9.1。在撰写本文时没有这类功能,最新版本是PostgresQl9.2。您唯一的选择是: 从postgresqlinit脚本启动一个脚本,该脚本轮询数据库,并在数据库准备就绪时锁定表并填充它们 修改启动脚本以使

我有几十个未标记的表,doc说一个未标记的表在崩溃或不干净的关机后会自动被截断

基于此,我需要在数据库开始后检查一些表,看看它们是否为空,并对此采取一些措施

所以简而言之,我需要在数据库启动之后执行一个过程

怎样做才是最好的方法


PS:我在Ubuntu12.04服务器上运行Postgres9.1。

在撰写本文时没有这类功能,最新版本是PostgresQl9.2。您唯一的选择是:

从postgresqlinit脚本启动一个脚本,该脚本轮询数据库,并在数据库准备就绪时锁定表并填充它们

修改启动脚本以使用pg_ctl start-w,并在pg_ctl返回时调用脚本;这具有相同的竞争条件,但无需轮询

教导应用程序在打开新池连接时运行测试,以检测此情况、锁定表并填充它们;或

如果应用程序在打开新连接时无法处理空表,则不要使用未标记的表执行此任务

有人讨论过pgsql黑客的连接时间挂钩,但没有发布和合并可行的实现


您可以使用PostgreSQL bgworkers执行类似的操作,但这比简单地从脚本轮询DB要困难得多。

在编写本文时,没有此类功能可用,最新版本是PostgreSQL 9.2。您唯一的选择是:

从postgresqlinit脚本启动一个脚本,该脚本轮询数据库,并在数据库准备就绪时锁定表并填充它们

修改启动脚本以使用pg_ctl start-w,并在pg_ctl返回时调用脚本;这具有相同的竞争条件,但无需轮询

教导应用程序在打开新池连接时运行测试,以检测此情况、锁定表并填充它们;或

如果应用程序在打开新连接时无法处理空表,则不要使用未标记的表执行此任务

有人讨论过pgsql黑客的连接时间挂钩,但没有发布和合并可行的实现

您可以使用PostgreSQL bgworkers执行类似操作,但这比简单地从脚本轮询数据库要困难得多。

Postgres现在已经有了PGU,可以确定数据库是否准备就绪。

Postgres现在已经准备好了pg_来确定数据库是否准备就绪。

可能是一个小bash脚本,它将在DB启动后立即启动?在这样的脚本中,您可以使用psql调用数据库中的函数。不幸的是,我无法更改数据库启动脚本。我需要数据库自己来做。也许是一个小的bash脚本,它会在数据库启动后立即启动?在这样的脚本中,您可以使用psql调用数据库中的函数。不幸的是,我无法更改数据库启动脚本。我需要用数据库自己做。