rake db:使用postgresql创建编码错误 [英] rake db:create encoding error with postgresql
问题描述
rake db:create
我得到以下错误
PGError:ERROR:新编码(UTF8)与模板数据库(SQL_ASCII)的编码不兼容
提示:使用与模板数据库中相同的编码,或者使用template0作为模板。
:CREATE DATABASESystem_testENCODING ='unicode'
正确的编码和迁移运行良好,但我可以运行
rake db:test:clone
命令,因为它尝试创建数据库,我不认为手动创建数据库。那么有人知道要解决这个问题吗?
greetings
编辑:这是我的database.yml
开发:
/ pre>
适配器:postgresql
编码:unicode
数据库:System_development
池:5
用户名:forellana
密码:
测试:& test
适配器:postgresql
编码:unicode
数据库:System_test
池:5
用户名:forellana
密码:
黄瓜:
< ;: * test
,这是命令的完整输出
in / home / fespinoza / Workspace / TLI)
PGError:ERROR:新编码(UTF8)与模板数据库(SQL_ASCII)的编码不兼容
提示:使用与模板数据库中相同的编码,或者使用template0作为模板。
:CREATE DATABASESystem_testENCODING ='unicode'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters /abstract_adapter.rb:207:in在日志中救援
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter .rb:199:在`log'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:493 :在`执行'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:572:in`create_database '
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:92:in`在create_database'中救援
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:39:in`create_database'
/家用/ fespinoza / .rvm /宝石/红宝石1.9.2-P1 80 / gems / activerecord-3.0.5 / lib / active_record / railties / databases.rake:33:在`block(2 levels)in< top(required)>'
/home/fespinoza/.rvm $ g $ / $ / $ -p180 / gems / rake-0.8.7 / lib / rake.rb:636:在`block in execute'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake -0.8.7 / lib / rake.rb:631:在each
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake .rb:631:在`执行'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in`block在invoke_with_call_chain'
/home/fespinoza/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in`mon_synchronize'
/ home / fespinoza / .rvm / gems / ruby-1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:590:在`invoke_with_call_chain'
/home/fespinoza/.rvm/gems/ruby -1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:583:在`invoke'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems /rake-0.8.7/lib/rake.rb:20 51:在`invoke_task'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in`block(2 levels )in top_level'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in`each'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in`block in top_level'
/ home / fespinoza /。 rvm / gems / ruby-1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:2068:在`standard_exception_handling'
/home/fespinoza/.rvm/gems/ruby-1.9。 2-p180 / gems / rake-0.8.7 / lib / rake.rb:2023:在`top_level'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake- 0.8.7 / lib / rake.rb:2001:在`block in run'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/ rake.rb:2068:在`standard_exception_handling'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1998:in`运行'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/bin/rake:31:in`< top(required)>'
/home/fespinoza/.rvm/gems/ruby-1.9。 2-p180 / bin / rake:19:在`load'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in`< main>'
无法为{adapter=>postgresql,encoding=>unicode,database=>System_test,pool=> 5,username =forellana,password=> nil}
PGError:ERROR:新编码(UTF8)与模板数据库的编码(SQL_ASCII)不兼容
提示:使用相同在模板数据库中编码,或者使用template0作为模板。
:CREATE DATABASESystem_developmentENCODING ='unicode'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters /abstract_adapter.rb:207:in在日志中救援
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter .rb:199:在`log'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:493 :在`执行'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:572:in`create_database '
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:92:in`在create_database'中救援
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:39:in`create_database'
/家用/ fespinoza / .rvm /宝石/红宝石1 .9.2-p180 / gems / activerecord-3.0.5 / lib / active_record / railties / databases.rake:35:在< top(required)>'
/ home / fespinoza中的`block(2级) /.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in`call'
/home/fespinoza/.rvm/gems/ruby- 1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:636:在`block in execute'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/ gems / rake-0.8.7 / lib / rake.rb:631:在each
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/ lib / rake.rb:631:在`execute'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:在`block in invoke_with_call_chain'
/home/fespinoza/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in`mon_synchronize'
$ / $ / $ / gems / ruby-1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:583:在`invoke'
/home/fespinoza/.rvm/gems/ruby-1.9.2- P180 /宝石/耙0.8.7 / LIB / RAK e.rb:2051:在`invoke_task'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in` block_(2级)在$ _
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in`block in top_level'
/ home $ f $ p $ / ruby-1.9.2-p180 / gems / rake-0.8.7 / lib / rake.rb:2023:在`top_level'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/ gems / rake-0.8.7 / lib / rake.rb:2001:在`block in run'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8。 7 / lib / rake.rb:2068:在`standard_exception_handling'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb中: 1998:在`run'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/bin/rake:31:in`< top(required) >'
/home/fespinoza/.rvm/gems/ru by-1.9.2-p180 / bin / rake:19:在`load'
/home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in`<主要>'
无法为{adapter=>postgresql,encoding=>unicode,database=>System_development,pool=> 5,username=>forellana,password=> nil}
解决方案这里的主要问题是您的模板数据库(
template1
)已经使用ASCII编码创建,您正在通知PostgreSQL来创建具有UTF8编码的新数据库。不用说,这不是特别高兴。您可以做的是清除template1
数据库,并使用这些说明。当您的托管服务提供商没有正确设置区域设置时,这也可能是一个问题。您可以阅读有关修复您缺少的区域设置的更多信息。
我通过这篇文章发现了关于 Fixing PostgreSQL在Ubuntu 9.10上的默认编码
I'm importing an existing rails project that I was working on into my new arch linux system, I already installed all gems and postgresql correctly, but I having some issues when runing:
rake db:create
I get the following error
PGError: 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 "System_test" ENCODING = 'unicode'
I created manually the database with the correct encoding and the migrations worked well, but I can run the
rake db:test:clone
command because It tries to create a database and I don't suppose to create manually the databases either. So, someone knows to fix this?
greetings
EDIT: here's my database.yml
development: adapter: postgresql encoding: unicode database: System_development pool: 5 username: forellana password: test: &test adapter: postgresql encoding: unicode database: System_test pool: 5 username: forellana password: cucumber: <<: *test
and here's the complete output of the command
(in /home/fespinoza/Workspace/TLI) PGError: 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 "System_test" ENCODING = 'unicode' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `rescue in log' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:199:in `log' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:493:in `execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:572:in `create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:92:in `rescue in create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:39:in `create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:33:in `block (2 levels) in <top (required)>' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in `call' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in `each' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in `execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain' /home/fespinoza/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `block (2 levels) in top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `each' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `block in top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2001:in `block in run' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1998:in `run' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/bin/rake:31:in `<top (required)>' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>' Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"System_test", "pool"=>5, "username"=>"forellana", "password"=>nil} PGError: 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 "System_development" ENCODING = 'unicode' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `rescue in log' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:199:in `log' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:493:in `execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:572:in `create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:92:in `rescue in create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:39:in `create_database' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.5/lib/active_record/railties/databases.rake:35:in `block (2 levels) in <top (required)>' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in `call' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in `each' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in `execute' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain' /home/fespinoza/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `block (2 levels) in top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `each' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in `block in top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2001:in `block in run' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1998:in `run' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/bin/rake:31:in `<top (required)>' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load' /home/fespinoza/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>' Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"System_development", "pool"=>5, "username"=>"forellana", "password"=>nil}
解决方案The main problem here is that your template database (
template1
) has been created with an ASCII encoding and you're telling PostgreSQL to create the new database with UTF8 encoding. Needless to say, it's not particularly pleased about that. What you can do is erase yourtemplate1
database and re-create it using these instructions. This can also be a problem when your hosting provider hasn't properly set the locale. You can read more about fixing your missing locales.I found all of this info through this post about Fixing PostgreSQL's default encoding on Ubuntu 9.10
这篇关于rake db:使用postgresql创建编码错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!