我已经从源代码安装了postgresql-9.2.4,现在在执行时在Rails应用程序中安装了该代码:

我得到的rake db:create命令:

$ bin/rake db:create RAILS_ENV="test"
PG::Error: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
HINT:  Use the same encoding as in the template database, or use template0 as template.
: CREATE DATABASE "verticals_test" ENCODING = 'unicode'
/home/vagrant/my-project/.gems/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `exec
....
bin/rake:16:in `load'
bin/rake:16:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"my_db", "host"=>"localhost", "pool"=>5, "username"=>"my_user", "password"=>"my_password"}

任何的想法?

最佳答案

好的,以下步骤解决了该问题:

  • 首先,我们需要删除template1。模板无法删除,因此我们首先对其进行修改,使其成为普通数据库:
    UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
  • 现在我们可以将其删除:
    DROP DATABASE template1;
  • 现在是时候使用新的默认编码从template0创建数据库了:
    CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
  • 现在修改template1,使其实际上是一个模板:
    UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
  • 现在切换到template1并VACUUM FREEZE冻结模板:
    \c template1VACUUM FREEZE;

  • 问题应该解决。

    08-26 08:20