【问题标题】:Rails Heroku - Resetting the databaseRails Heroku - 重置数据库
【发布时间】:2016-01-26 07:28:18
【问题描述】:

我正在尝试重置我的数据库。

它在本地或 heroku 中不起作用。

我成功运行了以下每个命令:

1. rake db:drop
2. rake db:create
3. rake db:migrate

迁移需要一段时间才能成功。我注释掉了导致问题的那些,整个工作完成了迁移。

然后我尝试使用以下命令重置我的数据库:

4. rake db:reset

我收到此错误:

initialize_schema_migrations_table()
   -> 0.0031s
rake aborted!
NoMethodError: undefined method `name=' for #<University:0x007fc288bdcca0>
/app/vendor/bundle/ruby/2.2.0/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:in `method_missing'

我在代码库中找不到任何地方有一个名为“name”的大学方法。我已经搜索了大学附近的大学名称和名称。

我已更新我的 gem 并运行 bundle install。

这个错误信息是什么意思?

当我尝试时:

rake db:reset --trace

我得到: ** 执行 db:abort_if_pending_migrations 耙中止! NoMethodError: 未定义方法name=' for #<University:0x007f9a1b24da30> /Users/em/.rvm/gems/ruby-2.2.2/gems/activemodel-4.1.9/lib/active_model/attribute_methods.rb:435:inmethod_missing'

我已经运行了所有迁移并刷新了 rake db:migrate

【问题讨论】:

  • 你能发布你的 schema.rb 吗?
  • 有什么特别的吗?它真的很大
  • @user2860931,你的问题解决了吗?

标签: ruby-on-rails heroku migration database-migration


【解决方案1】:

您的 seeds.rb 文件中似乎有什么东西导致了错误。

您在运行 rake db:reset 而不是在运行这 3 个单独步骤时看到问题的原因是 rake db:reset 不运行这 3 个单独步骤。

rake db:reset 将运行以下命令:

rake db:drop
rake db:setup

随后,rake db:setup 将运行这些:

rake db:create
rake db:schema:load
rake db:seed

如果您想要执行最初的 3 个步骤(rake db:droprake db:createrake db:migrate),则可以运行此代码:

rake db:migrate:reset

【讨论】:

    【解决方案2】:

    这是您在尝试写入尚未声明 attr_writer 的变量时遇到的错误。

    class Foo      
      attr_reader :bar
    
      def initialize
        @bar = 1
      end
    end
    
    > f = foo.new
     => #<Foo:0xa22ef0c @bar=1>
    > f.bar
     => 1
    > f.bar = 2
    NoMethodError: undefined method `bar=' for #<Foo:0xa22ef0c @bar=1>
        from (irb):23
        from /usr/local/rvm/rubies/ruby-2.1.3/bin/irb:11:in `<main>'
    

    【讨论】:

    • 嗨蜘蛛咬伤。不太确定这与我当前的问题有何关系。我试图了解为什么我可以成功删除、创建和迁移数据库,但由于此方法缺少错误,我无法重置它。我不知道错误消息在我的情况下是什么意思,或者在你的情况下是什么意思(我的应用程序中没有任何 attr_reader/writer 声明 - 这些可能是老学校的轨道)
    • 好吧 db:reset 运行 db:setup 任务,该任务将创建数据库、加载模式并使用种子数据对其进行初始化,因此这不仅仅是删除、创建和迁移。@987654321 @
    • 谢谢 - 我忘了检查我的种子文件,里面有旧的属性。我删除了它并重新运行它。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2016-02-27
    • 2013-05-14
    • 2016-05-29
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多