我去看看我的schema.rb文件,发现了以下内容:
ActiveRecord::Schema.define(version: 20140729164926) do
# Could not dump table "account_services_indices" because of following NoMethodError
# undefined method `default_function' for
#<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x757a77>
...
对数据库中的每个表重复最后三行!
数据库似乎工作正常。我可以做db:rollback和db:migrate没有问题,除了重新生成的schema.rb仍然如上所示。回顾我的GIT存储库,它发生在7/29/14左右。该提交中唯一与数据库相关的其他更改是次要迁移,为两个表中的每个表添加一列。我尝试了db:rollback,然后db:schema:dump,但没有运气。此时的其他提交只是对视图和控制器的更改。
我正在使用&#39; activerecord-jdbcpostgresql-adapter&#39;宝石。版本1.3.9于2014年7月7日发布。强制回到Gemfile中的1.3.8版本,捆绑并尝试了db:schema:dump,但仍然是同样的事情。 删除数据库并重新开始可能会起作用并且不会是灾难性的,但我现在不想丢失所有的开发数据。
在database.yml中重命名数据库。创建了新数据库并使用db:migrate构建了它。结果schema.rb仍然是相同错误的列表。
有什么建议吗?
答案 0 :(得分:0)
解决了!
我仍然不确定确切原因,但这是我的决议。我从头开始创建一个名为Blog的rails应用程序,然后开始复制我在真实应用程序中使用的gem。测试应用程序是使用
生成的gem 'rails', '4.1.4'
并且没有问题。我改变了
gem 'rails', '4.0.0'
匹配我的真实应用,并进行了捆绑更新和捆绑安装。执行rake db:schema:dump然后给了我以下错误:
rake aborted!
NoMethodError: undefined method `configure' for #<Blog::Application:0x6932cb>
/home/mpipkorn/rails_projects/blog/config/environments/development.rb:1:in `(root)'
/home/mpipkorn/rails_projects/blog/config/environment.rb:5:in `(root)'
Tasks: TOP => db:schema:dump => environment
在StackOverflow中领先后,我做了以下事情:
从
更改app / config / initializers / development.rb中的第一行Rails.application.configure do
到
Blog::Application.configure do
匹配我真实应用中的格式。我做了rake db:schema:dump再次。这次rake任务运行没有错误,但是查看生成的schema.rb文件,我看到了
ActiveRecord::Schema.define(version: 20140806174338) do
# Could not dump table "articles" because of following NoMethodError
# undefined method `default_function' for #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x183e66e>
end
将博客Gemfile(返回)更改为
gem 'rails', '4.1.4'
并进行捆绑更新和捆绑安装,然后执行rake db:schema:dump现在生成一个看似正常的schema.rb文件,没有错误消息!
底线是在我的实际应用程序中将rails gem从4.0.0更改为4.1.4解决了我的问题。究竟是什么导致这一点开始我仍然不确定,但沿途的更新似乎是错误的,并且有一些宝石的某些版本组合不起作用,也许是activerecord-jdbcpostgresql的组合-adapter 1.3.9 with Rails 4.0.0。