我已经在 2 个运行 Ubuntu 12.04 和 13.04 的虚拟机上成功地从 APT 存储库安装了 PostgreSQL 9.3 ......但是,我无法让它在运行 Ubuntu 12.04 的主机上正确安装。
安装(这次)似乎没问题,但也许有一个我不理解的错误:
* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
config /etc/postgresql/9.3/main
data /var/lib/postgresql/9.3/main
locale en_US.UTF-8
port 5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.
所以我然后尝试将自己添加为 PostgreSQL 用户,但我得到了这个:
createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我看不到 PostgreSQL 在系统监视器中运行,并且 /var/run/postgresql/ 文件夹中没有文件...完全为空。
编辑:在虚拟机上,/var/run/postgresql/ 中有一个名为 9.3-main.pid 的文件
位于 /var/log/postgresql 的主机日志文件中没有任何内容
那么...这里发生了什么而我的虚拟机中没有发生的事情?就像我说的,VM 上的其他安装,包括 PostGIS 和 PGAdmin 都非常完美……不知道为什么这台主机没有通过……
安装 PostgreSQL 时,我的语言环境设置未正确配置。清除和重新安装没有帮助。我按照此处的说明进行操作,这对我有用。
链接信息的基本部分转载如下:
问题以下列方式表现出来:
第一个很容易通过执行来解决:
...并选择首选语言环境。
但在那之后 PostgreSQL 仍然拒绝启动。这是因为安装过程试图在安装时创建一个集群,但由于语言环境不好,这没有完成。所以我们必须通过执行来重做这一步:
(适用于 9.3 版本的 PostgreSQL)
在这一步之后 PostgreSQL 通过
希望你已经解决了这个问题,但我遇到了一个类似的问题,似乎有不同的来源,如果你仍然有问题,我的经验可能会有所帮助。
我在 Ubuntu 上使用 9.3 的问题与套接字目录是 /run 中的临时目录有关。基本上,init.d 脚本应该负责在 /run/postgresql 中创建套接字目录,如果它在启动操作期间不存在。这始终是重启后的状态。
但是,问题是,如果套接字目录不存在,init.d 脚本将在执行启动操作之前退出。这是因为对 pg_lsclusters 的调用将在没有套接字目录的情况下失败,这反过来又会阻止启动操作创建套接字目录。
我还没有弄清楚最好的解决方案是什么,但是如果我将创建套接字目录的逻辑从启动操作重新定位到调用 pg_lsclusters 之前,我可以在重新启动后启动服务器而不会出现问题。
下面是处理创建套接字目录的 start 操作部分:
如果我清楚其根本原因,我将发布更新,因为这显然不是预期的行为。
附录:
我认为我遇到这个问题的原因是因为我没有为unix_socket_directories配置一个好的值。在 9.2 上,这个配置选项曾经是 unix_socket_directory,我删除了它而不是切换到 unix_socket_directories。由于我为 unix_socket_directories 设置了一个值,因此服务器启动没有任何问题。
我的套接字文件有几个问题,在你的情况下是 /var/run/postgresql/.s.PGSQL.5432
确保 /var/run/postgresql 目录存在并且在启动 postgresql 之前是可写的,有关更多信息,请参阅此讨论。
另外,连接时使用 -h 标志:
看看是否能解决它。
这似乎解决了 Ubuntu 上的问题:
编辑 postgresql.conf:
现在做
service postgresql start
我是 PSQL 的新手,但我通过编辑 start.conf 解决了这个问题,我评论了“自动”设置来手动管理服务器,但它需要一个值:自动、手动或禁用。
EGD。
在我这边,启动脚本不正确。配置文件安装在/etc/postgresql/9.3/main但脚本/usr/share/postgresql-common/init.d-functions正在搜索
将此行替换为
全部,
经过一番挖掘,我在这里找到了(a)解决方案:
http://ubuntuforums.org/showthread.php?t=869080
其中包含以下说明:
在终端中运行:
现在我的服务器已经启动并运行了!!!
编辑:重新启动后,服务器仍然没有运行......
任何关于我为什么需要运行它的想法都值得赞赏!