我已经从源代码安装了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"}

知道吗?

推荐答案

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

  1. 首先,我们需要删除模板1.模板无法删除,因此我们首先对其进行修改,使其成为普通数据库:

    UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';

  2. 现在我们可以放下它:

    DROP DATABASE template1;

  3. 现在是从template0创建数据库的时候了,使用新的默认编码:

    CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';

  4. 现在修改template1,使其实际上是一个模板:

    UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

  5. 现在切换到template1并真空冷冻模板:

    \c template1

    VACUUM FREEZE;

这个问题应该得到解决.

Ruby-on-rails相关问答推荐

如何修改使用Google Cloud App Engine部署rails 7应用程序的步骤

使用RubyZip处理大型压缩文件:65535个文件的限制

安装特定版本的Ruby时出现问题(OpenSSL问题)

GO AES GCM加密在解密时出错&S

有没有一种方法可以点击一个按钮来冒泡到父元素?

删除链接不起作用,重定向 echo 示 Ruby

Ruby on Rails 身份验证:设计注册不起作用

我需要在我的 Rails 7 应用程序中保留 app/assets/config/manifest.js 吗?

PostgreSQL 无间隙序列

在一行中更改多个对象属性

Rails:使用 RSpec 测试命名范围

渲染:动作和渲染:模板之间的区别

未定义的方法 attr_accessible

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

如何让 ActiveAdmin 使用强参数?

默认呈现 JSON 而不是 HTML?

在 Ruby on Rails 中的控制器中获取 URL 的锚部分

资源和资源方法之间的区别

错误:无法在 Mavericks 上构建 gem 原生扩展

Ruby 中有与 slice 函数相反的函数吗?