0
==  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),我正在添加回复,我正在使用祖先 gem 这样做。

我的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"
4

1 回答 1

0

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

rails g migration CreateMessages

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

rake db:migrate

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

于 2012-05-08T06:30:15.067 回答