服务器是否在本地运行并接受 Unix 域套接字上的连接"/var/run/postgresql/.s.PGSQL.5432"



我正在通过Ansible配置'Precise64' Ubuntu机器,我在确保数据库实际上已创建时遇到错误。我正在使用大部分的https://github.com/jcalazan/ansible-django-stack

- name: Install PostgreSQL
  apt: name={{ item }} update_cache={{ update_apt_cache }} state=installed
  with_items:
    - postgresql
    - postgresql-contrib
    - python-psycopg2
  tags: packages
- name: Ensure the PostgreSQL service is running
  service: name=postgresql state=started enabled=yes
- name: Ensure database is created
  sudo_user: postgres
  postgresql_db: name={{ db_name }}
                 encoding='UTF-8'
                 lc_collate='en_US.UTF-8'
                 lc_ctype='en_US.UTF-8'
                 template='template0'
                 state=present

然而,当到达最后一个任务时,我得到这个错误:

failed: [default] => {"failed": true, "playbook": "vagrant.yml","role": db, "task": "确保数据库已创建"}msg:无法创建连接数据库:无法连接到服务器:没有这样的文件或directory是在本地运行并接受连接的服务器Unix域套接字"/var/run/postgresql/.s.PGSQL.5432"?

FATAL: all hosts has already failed——aborting

我在Ubuntu 14.04 LTS上的ansible和vagrant也有同样的问题。Alfonso的回答并没有解决问题。

我意识到vagrant将本地化设置从我的系统(不是en_US)复制到虚拟系统。导致数据库创建问题。

vagrant up之前运行以下shell代码修复了这个问题:

export LANGUAGE=en_US
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_PAPER="en_US.UTF-8"
export LC_NAME="en_US.UTF-8"
export LC_ADDRESS="en_US.UTF-8"
export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"

暂时更改本地化设置,以便en_US将被复制到虚拟系统。

@damgad的答案确实适用于我,但由于我很懒,我不想每次需要设置Postgresql时都要导出所有这些env变量。

我可以把它放在我的.bash_rc或类似的地方,但我也不想让它在帐户范围内定义,因为这里的重点是因为我有一个不同的语言环境。

因此,使用@alfonso-perez最初答案的一部分,我最终使用了这两个额外的任务,并且不必再次导出任何内容:

- name: Install Language packages
  apt: name=language-pack-en update_cache={{ update_apt_cache }} force=yes state=latest
  tags: packages
- name: Locale (is a b****)
  locale_gen: name={{ item }} state=present
  with_items:
    - en_US
    - en_US.UTF-8
    - pt_BR.UTF-8
    - de_DE.UTF-8
- name: Install PostgreSQL
  apt: name={{ item }} update_cache={{ update_apt_cache }} state=installed
  with_items:
    - postgresql-9.3
    - postgresql-contrib-9.3
    - postgresql-server-dev-9.3
    - python-psycopg2
  tags: packages

经过一些调试后,我通过安装语言包使postgres守护进程在启动

时不会抱怨区域设置,从而使其工作。
- name: Install Language packages
  apt: name=language-pack-en update_cache={{ update_apt_cache}} force=yes state=latest
  tags: packages

相关内容

最新更新