【问题标题】:Rails migration error - table not showing in schema.rbRails 迁移错误 - 表未显示在 schema.rb 中
【发布时间】:2016-08-07 11:19:39
【问题描述】:

我的一个模型表(事件)没有显示在 schema.rb 文件中,而在它的位置有这条消息 -

# Could not dump table "events" because of following NoMethodError
#   undefined method `[]' for nil:NilClass

最后一次迁移成功如下-

class RemoveOrganiserDescriptionFromEvents < ActiveRecord::Migration
  def change
    remove_column :events, :organiser_description, :text
  end
end

改成这个了-

class AddOrganiserProfileToEvents < ActiveRecord::Migration
  def change
    add_column :events, :organiser_profile, :url
  end
end

我很确定它已经“古怪”了,因为属性不应该是 url,而应该是字符串。但是,当我尝试执行其他迁移时,它不起作用。当我尝试执行 rake db:migrate -

时,我的终端中出现以下错误

未定义的方法to_sym' for nil:NilClass Did you mean? to_s/Users/Michael/MWCoding/MamaKnows/mama_knows/db/migrate/20160415123947_remove_events_organiser_profile.rb:3:inchange' NoMethodError:nil:NilClass 的未定义方法“to_sym” 你的意思是? to_s

在我的迁移文件中,这是我的代码 -

def change
   change_column :events, :organiser_profile :string

end

def up
  change_column :events, :organiser_profile, :string
end

def down
  change_column :events, :organiser_profile, :url
end

我还尝试完全删除该列,然后尝试将其替换为正确的版本,但无济于事。我们将不胜感激所有即将到来的帮助。

【问题讨论】:

  • remove_column :events, :organiser_description - RemoveOrganiserDescriptionFromEvents 应该如下所示。尝试改变这个
  • 迁移中为什么会有变化,上下波动?
  • 我在之前的 SO Q&A 上看到过。
  • 以上方法我都试过了,还是不行。
  • @Mike.Whitehead 不确定您要在这里实现什么。如果您已运行迁移 AddOrganiserProfileToEvents,它将不会运行,因为 url 不是数据类型。

标签: ruby-on-rails schema rake database-migration


【解决方案1】:
add_column :events, :organiser_profile, :url

没有意义。请参阅add_column 方法here 的文档。参数是表、列名和列类型。 :url 不是有效类型。列出了有效类型here

【讨论】:

  • 迁移完成(见上文),但这显然是破坏它的原因。问题是,我该如何取回它??
  • 删除有问题的迁移 .rb 文件,然后执行“rake db:drop”,然后执行“rake db:migrate”
  • 那么,我需要删除那个特定的迁移文件吗?是直接从文件中删除还是在命令行中删除?
  • 只需删除文件并从头开始重新运行迁移(请参阅我上面的评论)
  • 不会 rake db:drop 删除整个数据库?
【解决方案2】:

我能够通过删除迁移并重新迁移来解决此问题:

rake db:drop:all

然后

rake db:迁移

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 2014-12-22
    • 2017-09-19
    • 1970-01-01
    • 2018-02-12
    • 2011-02-17
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多