rake db:迁移错误表

时间:2014-10-23 17:04:08

标签: ruby-on-rails ruby devise

我正在尝试运行rake db:migrate并在控制台中收到错误。

好像我正在创建一个已经存在的表,但我不知道如何删除旧表,或者重置数据库以重新开始。

我没有任何用户如此删除或从新的赢得开始不是一个问题。

  

create_table(:users)rake aborted! StandardError:出错   发生了,这次以及所有后来的迁移都被取消了:

     

SQLite3 :: SQLException:table" users"已经存在:CREATE TABLE   "用户" (" id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," email"   varchar(255)DEFAULT'' NOT NULL," encrypted_pa​​ssword" VARCHAR(255)   默认'' NOT NULL," reset_password_token" VARCHAR(255),   " reset_password_sent_at" datetime," remember_created_at"约会时间,   " sign_in_count"整数DEFAULT 0 NOT NULL," current_sign_in_at"   datetime," last_sign_in_at" datetime," current_sign_in_ip"   varchar(255)," last_sign_in_ip" varchar(255)," created_at"约会时间,   "的updated_at"约会时间)   /Users/jovanhernandez/.rvm/gems/ruby-2.1.2/gems/sqlite3-1.3.9/lib/sqlite3/database.rb:91:in   `初始化'

4 个答案:

答案 0 :(得分:3)

如果您不介意删除数据,可以运行

rake db:drop
rake db:create
rake db:migrate

那应该解决它。否则,您可以暂时注释掉部分内容,从而导致迁移中的更改(或更新)方法出现问题,然后运行迁移。迁移完成后,取消注释迁移。

这样做可以让我们接受迁移是最新的。

答案 1 :(得分:2)

您可以使用

重置数据库
$ rake db:reset

或者如果要撤消迁移,可以使用

$ rake db:rollback

或者,如果您想更新表,可以在迁移文件中将其从create_table更改为change_table

create_table :users do |t|

change_table(:users) do |t|

答案 2 :(得分:2)

看起来你没有任何用户迁移,但你有迁移来更改用户表。你试图改变用户表而不存在它。如果你有模式文件,那么你可以使用rake从那里加载你的数据库db:schema:dump命令。

答案 3 :(得分:1)

您已经创建了用户表。看起来迁移已经运行,无需再次运行。