通过'rake db:setup'破坏了数据库? (ROR)

时间:2012-08-25 08:27:12

标签: ruby-on-rails postgresql rake


昨天,我正在尝试设置一个名为“Elasticsearch”的全文搜索引擎,我按照Railscasts.com(http://railscasts.com/episodes/306-elasticsearch-part-1?view=comments&_=1345840910957)上的说明将这个搜索引擎整合到我的网站上。 我跟着任务到了调用'rake db:setup'并且“重新创建”我的整个数据库(不想要那个),现在没有任何作用。看起来Rails从schema.rb重新创建了db,但它只创建了表和索引,而不是与它相关联的列。 http://img14.imageshack.us/img14/1535/bildschirmfoto20120825u.png
我在_development db。

正在运行rake db:setup

doanything_development already exists 
doanything_test already exists
-- create_table("admin_notes", {:force=>true})
NOTICE:  CREATE TABLE will create implicit sequence "admin_notes_id_seq" for serial column "admin_notes.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "admin_notes_pkey" for table "admin_notes"
   -> 0.1088s
-- add_index("admin_notes", ["admin_user_type", "admin_user_id"], {:name=>"index_admin_notes_on_admin_user_type_and_admin_user_id"})
   -> 0.0064s
-- add_index("admin_notes", ["resource_type", "resource_id"], {:name=>"index_admin_notes_on_resource_type_and_resource_id"})
   -> 0.0049s ...<br /><br />
Schema.rb looks like: " create_table "users", :force => true do |t|<br />
    t.string   "name"
    t.string   "email"
    t.datetime "created_at",:null => false
    t.datetime "updated_at",:null => false ... end <br />

它在我的pgdb表“Sequences”列上创建,如"users_id_seq",我之前没有。运行“rake db:migrate”不会加载任何现有的迁移文件:e.x。

class AddSaltToUsers < ActiveRecord::Migration <br/>
  def change <br/>
    add_column :users, :salt, :string <br/>
  end
end

版本是:ruby 1.9.3p194,Rails 3.2.6和PostgreSQL 9.1.4

如果有人能够弄清楚刚刚发生了什么,以及我如何让我的网站再次运作。

1 个答案:

答案 0 :(得分:1)

如果您运行rake db:migrate一次。 AddSaltToUsers的迁移可能已经运行。如果是这样,有几种方法可以解决这个问题。

创建新的迁移文件,或手动编辑schema_migrations,方法是从该表中删除版本号,然后重新运行rake db:migrate。我强烈建议你不要这样做,因为如果你不知道自己在做什么,它会把你的迁移搞得一团糟。

希望有所帮助。