【问题标题】:Rails migration error - SQLite database unable to remove or add columnRails 迁移错误 - SQLite 数据库无法删除或添加列
【发布时间】:2016-08-07 22:12:33
【问题描述】:

我正在尝试更改我的 Rails 应用程序数据库中的表,但遇到以下问题 -

rake 中止! StandardError:发生错误,此迁移和所有后续迁移已取消:

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

我已经尝试回滚和迁移:重做,但我什么也没得到,我担心我现在别无选择,只能做一个下降。我相信这个错误是在我使用了不正确的列类型的早期迁移之后发生的。

我该如何从这里继续前进?我对 Rails 还很陌生,之前从未完成过数据库删除,所以对过程有点不确定。任何帮助将不胜感激。

来自错误代码的上次迁移的代码 -

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

事件表 -

    class CreateEvents < ActiveRecord::Migration
  def change
    create_table :events do |t|
      t.string :title
      t.string :location
      t.date :date
      t.time :time
      t.text :description
      t.string :organised_by
      t.text :organiser_description

      t.timestamps null: false
    end
  end
end

事件表没有显示在 schema.rb 文件中,在它的位置我有以下文本 -

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

从 SQLite,运行 PRAGMA table_info(events);

0|id|INTEGER|1||1
1|title|varchar|0||0
2|location|varchar|0||0
3|date|date|0||0
4|time|time|0||0
5|description|text|0||0
6|organised_by|varchar|0||0
7|created_at|datetime|1||0
8|updated_at|datetime|1||0
9|user_id|integer|0||0
10|image_file_name|varchar|0||0
11|image_content_type|varchar|0||0
12|image_file_size|integer|0||0
13|image_updated_at|datetime|0||0
14|category_id|integer|0||0
15|url|varchar|0||0
16|number_of_spaces|integer|0||0
17|price|integer|0||0
18|is_free|boolean|0||0
19|organiser_profile|url|0||0

【问题讨论】:

  • 请发布迁移代码。
  • 你的意思是跟踪吗?
  • 我的意思是这次迁移中的代码:mama_knows/db/migrate/20160415190242_remove_organiser_description_from_events.rb
  • 类 RemoveOrganiserDescriptionFromEvents
  • 这不是很好 - 我已经在上面的问题中添加了它。

标签: mysql ruby-on-rails ruby sqlite


【解决方案1】:

修复迁移文件上的错误属性organiser_profile,然后如果删除数据库对您来说不是问题,请在命令行中执行:

bundle exec rake db:drop db:create db:migrate

【讨论】:

  • 我应该开始一个全新的迁移还是通过删除类型来更新该迁移文件?我已经尝试过回滚,所以无论如何它可能是一个死文件。
  • 上面没有错字。我应该删除上表中的错误条目(organiser_profile - url)吗?如果是,我该如何在命令行上执行此操作?
  • 好的,我认为我的数据库中没有大量数据,所以这不会成为问题。在我进行删除之前检查数据库中的内容的命令是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2017-08-03
  • 2016-08-08
  • 2012-08-24
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多