我正在尝试更改 Rails 应用程序数据库中的表,但遇到了以下问题 -
rake 中止! StandardError:发生错误,此迁移和所有后续迁移均已取消:
nil:NilClass 的未定义方法 to_sym'
你的意思? to_s/Users/Michael/MWCoding/MamaKnows/mama_knows/db/migrate/20160415190242_remove_organiser_description_from_events.rb:3:in
更改'
NoMethodError:nil:NilClass 的未定义方法“to_sym”
你的意思?至_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
最佳答案
修复迁移文件上错误的属性organiser_profile,然后如果删除数据库对您来说不是问题,请在命令行中执行以下操作:
bundle exec rake db:drop db:create db:migrate
关于mysql - Rails 迁移错误 - SQLite 数据库无法删除或添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655597/