为什么当我尝试运行 rake db:migrate 时总是收到此错误


==  AddAncestryToMessages: migrating ==========================================
-- add_column(:messages, :ancestry, :string)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: no such table: messages: ALTER TABLE "messages" ADD "ancestry" varchar(255)

所以我的应用程序有你可以发布的消息(有点像Twitter)和我添加回复,我正在使用祖先宝石来做到这一点。

我的代码在我的schema.rb文件中(我认为这是每次运行 rake db:migrate 时用于创建表的文件。 但我可能是错的(这可能是问题所在!

  create_table "messages", :force => true do |t|
    t.string   "content"
    t.integer  "user_id"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
    t.string   "ancestry"
  end
  add_index "messages", ["user_id", "created_at", "ancestry"], :name =>   "index_messages_on_user_id_and_created_at_and_ancestry"

哦,现在我明白了:您将代码添加到schema.rb但必须使用迁移。从schema.rb中删除手动添加的代码并运行:

rails g migration CreateMessages

您将获得文件 db/migrate/[timestamp]_create_messages.rb。用您的代码填充其 change 方法,然后运行(它应该为您创建,但为空。对于旧版本,它被命名为 up ):

rake db:migrate

此命令将自行更改您的schema.rb不要手动更改它!(至少直到你成为一个成熟的Rails程序员)。

相关内容

  • 没有找到相关文章

最新更新