测试时切换分支导致数据库不存在错误
Switching Branches causes database does not exist error when testing
我最近在一个新工作区中设置了 postgresql。我按照通常的方式设置它。或者至少我认为我做到了。但是后来我得到了这个错误
Failure/Error: ActiveRecord::Migration.maintain_test_schema!
ActiveRecord::NoDatabaseError:
FATAL: database "app_test" does not exist
它只发生在我换到一个分支并且运行 rspec。到目前为止,我一直在创建数据库并 运行 每次在分支之间切换时进行迁移作为解决方案。
它不会影响开发数据库。只要我留在那个分支上,我就不必再次添加测试数据库。但是如果我因为任何原因不得不离开它,我将不得不重新添加数据库。
它似乎会影响任何不是主分支的分支。而且这只发生在本地。我正在使用 Cloud 9,我的应用程序是 Rails 应用程序。我应该卸载并重新安装 postgresql,然后重新设置吗?
最近要同时处理好几个分支,比较麻烦。我很想创建一个新的工作区。
这是我的 database.yml(当然有些东西是隐藏的,app 是我应用名称的替代品)。
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'] %>
提前致谢
您应该可以通过 运行:
重置您的数据库
rake db:drop db:create db:migrate db:test:prepare
这将删除您的开发数据库(以及其中的任何数据),重新创建它,从您的迁移文件重建架构,并重建测试数据库。如果此时它不起作用,则可能是权限问题
我遇到过类似的问题。
只需尝试更改 database.yml
的这一行
主机:127.0.0.1
当我提供本地主机时,它使用默认设置进行连接。 (我在不同的端口上有很多数据库服务器版本)
- 首先,我删除了我的本地分支以开始清理(这可能不是必需的,但由于它们中的大多数更改了模式,我认为它会更干净)。我的更改全部远程存储,所以这没什么大不了的。
- 然后我在开发和测试部分将
template: template0
添加到我的 database.yml 中。我听从了这个建议 Fix for PG::Error: ERROR: new encoding (UTF8) is incompatible
因为我有这个错误:
"PG::InvalidParameterValue: ERROR: 新编码 (UTF8) 与模板数据库的编码不兼容 (SQL_ASCII)
提示:使用与模板数据库中相同的编码,或使用 template0 作为模板。"
每当我尝试使用 rake db:create
- 之后我按照 NM Pennypacker 的指导做了
rake db:drop
、rake db:create
、rake db:migrate
和 rake db:test:prepare
。
我创建了一些分支,引入了远程更改并且 运行 rspec 没有问题。谢谢大家的指教!
我最近在一个新工作区中设置了 postgresql。我按照通常的方式设置它。或者至少我认为我做到了。但是后来我得到了这个错误
Failure/Error: ActiveRecord::Migration.maintain_test_schema!
ActiveRecord::NoDatabaseError:
FATAL: database "app_test" does not exist
它只发生在我换到一个分支并且运行 rspec。到目前为止,我一直在创建数据库并 运行 每次在分支之间切换时进行迁移作为解决方案。
它不会影响开发数据库。只要我留在那个分支上,我就不必再次添加测试数据库。但是如果我因为任何原因不得不离开它,我将不得不重新添加数据库。
它似乎会影响任何不是主分支的分支。而且这只发生在本地。我正在使用 Cloud 9,我的应用程序是 Rails 应用程序。我应该卸载并重新安装 postgresql,然后重新设置吗?
最近要同时处理好几个分支,比较麻烦。我很想创建一个新的工作区。
这是我的 database.yml(当然有些东西是隐藏的,app 是我应用名称的替代品)。
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'] %>
提前致谢
您应该可以通过 运行:
重置您的数据库rake db:drop db:create db:migrate db:test:prepare
这将删除您的开发数据库(以及其中的任何数据),重新创建它,从您的迁移文件重建架构,并重建测试数据库。如果此时它不起作用,则可能是权限问题
我遇到过类似的问题。 只需尝试更改 database.yml
的这一行主机:127.0.0.1
当我提供本地主机时,它使用默认设置进行连接。 (我在不同的端口上有很多数据库服务器版本)
- 首先,我删除了我的本地分支以开始清理(这可能不是必需的,但由于它们中的大多数更改了模式,我认为它会更干净)。我的更改全部远程存储,所以这没什么大不了的。
- 然后我在开发和测试部分将
template: template0
添加到我的 database.yml 中。我听从了这个建议 Fix for PG::Error: ERROR: new encoding (UTF8) is incompatible 因为我有这个错误:
"PG::InvalidParameterValue: ERROR: 新编码 (UTF8) 与模板数据库的编码不兼容 (SQL_ASCII) 提示:使用与模板数据库中相同的编码,或使用 template0 作为模板。"
每当我尝试使用 rake db:create
- 之后我按照 NM Pennypacker 的指导做了
rake db:drop
、rake db:create
、rake db:migrate
和rake db:test:prepare
。 我创建了一些分支,引入了远程更改并且 运行 rspec 没有问题。谢谢大家的指教!