DPS*_*ial 13 postgresql postgresql-9.3
我已经在运行 Ubuntu 12.04 和 13.04 的 2 个虚拟机上从 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.
Run Code Online (Sandbox Code Playgroud)
所以我然后尝试将自己添加为 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"?
Run Code Online (Sandbox Code Playgroud)
我在系统监视器中看不到 PostgreSQL 正在运行,并且 /var/run/postgresql/ 文件夹中没有文件......完全是空的。
编辑:在 VM 上,/var/run/postgresql/ 中有一个名为 9.3-main.pid 的文件
位于 /var/log/postgresql 的主机日志文件上没有任何内容
那么......这里发生了什么而不是在我的虚拟机中发生?就像我说的,VM 上的其他安装,包括 PostGIS 和 PGAdmin 都很完美……不知道为什么这台主机没有通过……
小智 16
安装 PostgreSQL 时,我的语言环境设置未正确配置。清除和重新安装没有帮助。我按照这里的说明进行操作,这对我有用。
链接信息的基本部分转载如下:
问题表现为以下方式:
warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.
Run Code Online (Sandbox Code Playgroud)
第一个很容易通过执行来解决:
#dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
...并选择首选语言环境。
但在那之后 PostgreSQL 仍然拒绝启动。这是因为安装过程试图在安装时创建集群,但由于区域设置不正确,这并没有完成。所以我们必须通过执行来重做这一步:
#pg_createcluster 9.3 main --start
Run Code Online (Sandbox Code Playgroud)
(针对 9.3 版本的 PostgreSQL)
在这一步之后 PostgreSQL 通过以下方式完美启动
#/etc/init.d/postgresql start
Run Code Online (Sandbox Code Playgroud)
希望您已经解决了这个问题,但我遇到了一个似乎有不同来源的类似问题,如果您仍然遇到问题,也许我的经验会有所帮助。
我在 Ubuntu 上的 9.3 问题与套接字目录是 /run 中的临时目录有关。基本上,init.d 脚本应该负责在 /run/postgresql 中创建套接字目录,如果它在启动操作期间不存在。这将始终是重新启动后的状态。
然而,问题是,如果套接字目录不存在,init.d 脚本将在执行启动操作之前退出。这是因为对 pg_lsclusters 的调用将在没有套接字目录的情况下失败,这反过来又会阻止启动操作创建套接字目录。
我还没有想出最好的解决方案是什么,但是如果我将创建套接字目录的逻辑从启动操作重新定位到调用 pg_lsclusters 之前,我就可以在重新启动后毫无问题地启动服务器。
这是处理创建套接字目录的 start 操作的一部分:
# create socket directory
if [ -d /var/run/postgresql ]; then
chmod 2775 /var/run/postgresql
else
install -d -m 2775 -o postgres -g postgres /var/run/postgresql
[ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi
Run Code Online (Sandbox Code Playgroud)
如果我清楚其根本原因,我会发布更新,因为这显然不是预期的行为。
附录:
我认为我遇到这个问题的原因是我没有为unix_socket_directories配置好的值。在 9.2 上,此配置选项曾经是 unix_socket_directory,我将其删除而不是切换到 unix_socket_directories。因为我为 unix_socket_directories 设置了一个值,所以我在服务器启动时没有遇到任何问题。
归档时间: |
|
查看次数: |
49748 次 |
最近记录: |