微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL使用Puppet与SQL_ASCII一起安装

我正在尝试构建使用Puppet配置的Vagrant盒子.

我从http://files.vagrantup.com/precise64.box开始使用Ubuntu 12.04 LTS盒子.

我还使用http://forge.puppetlabs.com/puppetlabs/postgresql模块安装Postgresql,其中包含以下清单:

class db {
  class { 'postgresql': version => '9.1' }
  class { 'postgresql::server': }
}
class { 'db': }

它安装正确,但数据库是使用sql_ASCII编码创建的:

$psql -l -U postgres
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | sql_ASCII | C       | C     |
 template0 | postgres | sql_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | sql_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres

谷歌搜索后,我认为它可能是一个区域设置问题,但它看起来对我来说是正确的:

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

你知道我该怎么做才能安装认的UTF8编码的Postgresql吗?能够使用Puppet也很好.

解决方法

显然,它是Puppet bug http://projects.puppetlabs.com/issues/4695.从问题评论添加以下代码作为解决方法

# workaround for http://projects.puppetlabs.com/issues/4695
# when Postgresql is installed with sql_ASCII encoding instead of UTF8
exec { 'utf8 postgres':
  command => 'pg_dropcluster --stop 9.1 main ; pg_createcluster --start --locale en_US.UTF-8 9.1 main',unless  => 'sudo -u postgres psql -t -c "\l" | grep template1 | grep -q UTF',require => Class['postgresql::server'],path    => ['/bin','/sbin','/usr/bin','/usr/sbin'],}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐