我最近在新的工作区中设置了postgresql。我以通常的方式设置它。或者至少我以为我做到了。但是后来我得到了这个错误
Failure/Error: ActiveRecord::Migration.maintain_test_schema!
ActiveRecord::NoDatabaseError:
FATAL: database "app_test" does not exist
仅当我更改为分支并运行rspec时才会发生。到目前为止,作为解决方案,每次我在分支之间切换时,我一直在创建数据库并运行迁移。
它不会影响开发数据库。只要我留在该分支上,就不必再次添加测试数据库。但是如果由于任何原因不得不离开它,我将不得不再次添加数据库。
似乎会影响不是主节点的任何分支。而且这仅在本地发生。我正在使用Cloud 9,我的应用程序是Rails应用程序。我应该卸载并重新安装postgresql,然后重新设置它吗?
最近,我不得不同时在几个分支上工作,所以这变得很麻烦。我很想仅仅创建一个新的工作区。
这是我的database.yml(当然,其中隐藏了一些东西,应用程序代表了我的应用程序名称)。
default: &default
adapter: postgresql
encoding: unicode
host: localhost
username: postgres
password: secret
pool: 5
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
提前谢谢
答案 0 :(得分:1)
您应该能够通过运行以下命令来重置数据库:
rake db:drop db:create db:migrate db:test:prepare
这将删除您的dev数据库(及其中的所有数据),重新创建它,从迁移文件重建架构,并重建测试数据库。如果那时候不起作用,则可能是权限问题
答案 1 :(得分:0)
我面临类似的问题。 只需尝试更改这一行的database.yml
主机:127.0.0.1
当我提供本地主机时,它使用默认设置进行连接。 (我在不同的端口上有很多数据库服务器版本)
答案 2 :(得分:0)
template: template0
添加到了database.yml中。我遵循了这个建议Fix for PG::Error: ERROR: new encoding (UTF8) is incompatible
因为我遇到了这个错误:“ PG :: InvalidParameterValue:错误:新编码(UTF8)与模板数据库的编码(SQL_ASCII)不兼容 提示:使用与模板数据库相同的编码,或使用template0作为模板。“
每当我尝试使用rake db:create
rake db:drop
,rake db:create
,rake db:migrate
和rake db:test:prepare
。
我已经做了一些分支,进行了远程更改并毫无问题地运行rspec。谢谢大家的建议!