Python Postgresql无法启动

Python Postgresql无法启动,python,sql,postgresql,ubuntu,Python,Sql,Postgresql,Ubuntu,我试图在Ubuntu上使用PostgreSQL。我安装了它,一切正常。然而,由于空间限制,我需要更改数据库的位置,所以我尝试了一个在线指南来完成这项工作 我继续停止postgresql,创建一个新的空目录,并使用 chown postgres:postgres /my/dir/path 这也很有效。然后我用 initdb -D /my/dir/path 启用我的数据库。我还将postgresql.conf文件中的路径_数据更改为我的新目录 当我现在尝试启动数据库时,它说:postgresql

我试图在Ubuntu上使用PostgreSQL。我安装了它,一切正常。然而,由于空间限制,我需要更改数据库的位置,所以我尝试了一个在线指南来完成这项工作

我继续停止postgresql,创建一个新的空目录,并使用

chown postgres:postgres /my/dir/path
这也很有效。然后我用

initdb -D /my/dir/path
启用我的数据库。我还将
postgresql.conf
文件中的路径_数据更改为我的新目录


当我现在尝试启动数据库时,它说:
postgresql server无法启动,请检查日志文件
。但是,没有日志文件!当我更改默认目录时,有些事情搞砸了。如何修复此问题?

首先:您可能会发现使用Ubuntu提供的自定义工具在Ubuntu上更容易管理Pg安装,这些工具是:,等的一部分。这些工具与Ubuntu启动脚本集成,并将配置移动到Ubuntu喜欢保留它的
/etc/postgresql/
,而不是datadir中的postgresql默认设置。要移动实际文件存储的位置,请使用符号链接(请参见下文)

当您遇到问题时,如何启动PostgreSQL

如果您通过
pg_ctl
启动它,它应该可以正常工作,因为您必须指定数据目录位置。但是,如果您使用的是发行版软件包脚本,他们不知道您已经移动了数据目录

在Ubuntu上,您需要更改
/etc/postgresql
中的配置来告诉脚本数据目录的位置,可能是
pg_ctl.conf
start.conf
,以获得合适的版本。我不确定具体细节,因为我从来都不需要这样做。这就是为什么:

不过,还有更好的办法。使用从旧datadir位置到新datadir位置的符号链接。PostgreSQL和安装脚本将很乐意遵循它,您不必更改任何配置

cd /var/lib/postgresql/9.1/main
mv main main.old
ln -s /new/datadir/location main
我猜“9.1”是因为你没有给出你的Ubuntu版本或PostgreSQL版本

另一种方法是使用
mount-obind
将新的datadir位置映射到旧位置,这样就不会有任何区别。然后将绑定挂载添加到
/etc/fstab
,使其在重新启动期间保持不变。只有当其中一个工具不喜欢符号链接方法时,才需要这样做。我认为这不会是
pg_包装器的问题

您还应该注意,由于您手动使用了initdb,因此新的datadir将直接在datadir中配置,而不是在
/etc/postgresql/


如果您只使用Ubuntu群集管理脚本,这会更容易。

首先:您可能会发现使用Ubuntu提供的自定义工具在Ubuntu上管理Pg安装会更容易:,等等。它们与Ubuntu启动脚本集成,并将配置移动到Ubuntu喜欢保留的
/etc/postgresql/
,而不是datadir中的postgresql默认值。要移动实际文件存储的位置,请使用符号链接(请参见下文)

当您遇到问题时,如何启动PostgreSQL

如果您通过
pg_ctl
启动它,它应该可以正常工作,因为您必须指定数据目录位置。但是,如果您使用的是发行版软件包脚本,他们不知道您已经移动了数据目录

在Ubuntu上,您需要更改
/etc/postgresql
中的配置来告诉脚本数据目录的位置,可能是
pg_ctl.conf
start.conf
,以获得合适的版本。我不确定具体细节,因为我从来都不需要这样做。这就是为什么:

不过,还有更好的办法。使用从旧datadir位置到新datadir位置的符号链接。PostgreSQL和安装脚本将很乐意遵循它,您不必更改任何配置

cd /var/lib/postgresql/9.1/main
mv main main.old
ln -s /new/datadir/location main
我猜“9.1”是因为你没有给出你的Ubuntu版本或PostgreSQL版本

另一种方法是使用
mount-obind
将新的datadir位置映射到旧位置,这样就不会有任何区别。然后将绑定挂载添加到
/etc/fstab
,使其在重新启动期间保持不变。只有当其中一个工具不喜欢符号链接方法时,才需要这样做。我认为这不会是
pg_包装器的问题

您还应该注意,由于您手动使用了initdb,因此新的datadir将直接在datadir中配置,而不是在
/etc/postgresql/


如果您只使用Ubuntu群集管理脚本,这会更简单。

请提供基本信息,如您的Ubuntu和PostgreSQL版本,以及任何错误消息的确切文本。您对这个问题的回答很差,因为它缺少最低合理数量的信息。“在线指南”?哪一个。链接到它。当你说你编辑了
postgresql.conf
-那个文件在哪里<代码>/etc/postgresql/
?你的数据目录?当您“尝试启动数据库”-使用哪个确切的命令?显示错误消息和精确命令。请详细和具体。重新发布为,并再次发布为。请包括基本信息,如Ubuntu和PostgreSQL版本,以及任何错误消息的确切文本。您对这个问题的回答很差,因为它缺少最低合理数量的信息。“在线指南”?哪一个。链接到它。当你说你编辑了
postgresql.conf
-那个文件在哪里<代码>/etc/postgresql/
?你的数据目录?当您“尝试启动数据库”-使用哪个确切的命令?显示错误消息和精确命令。详细和具体。作为重新发布,并作为重新发布。