Rails教程,第6章 - SQLite3 :: SQLException:表“users”已经存在

时间:2015-07-28 21:42:11

标签: ruby-on-rails railstutorial.org

首先我运行了rails generate model User name:string email:string,这会创建一个迁移。后来我做了一个db:migrate,我收到了这个错误:

bundle exec rake db:migrate
== 20150728195629 CreateUsers: migrating ======================================
-- create_table(:users)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "users" already exists.....

当你generate model创建表user但是当你rake db:migrate它再次尝试创建它时。

我很困惑!我做错了吗?

https://www.railstutorial.org/book/modeling_users#code-generate_user_model

3 个答案:

答案 0 :(得分:3)

你必须创建一个表,如Marsatomic所说。运行

bundle exec rake db:migrate:status 

查看您的迁移历史记录,了解您创建它的位置。如果您看到它,则可以通过该表回滚迁移,删除创建它的迁移文件,然后重新运行迁移。如果您在任何地方都看不到它,则必须在没有迁移的情况下创建表。那时你应该像Marsatomic在上面的评论中指示的那样做。

答案 1 :(得分:3)

刚进入控制台

rails console

并输入

ActiveRecord::Migration.drop_table(:users)

然后 退出控制台和

rake db:migrate

答案 2 :(得分:1)

你可以使用'db:reset',它=='db:drop db:create db:migrate'