我正在尝试运行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_password" 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 `初始化'
答案 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)
您已经创建了用户表。看起来迁移已经运行,无需再次运行。