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

nfg76nw0  于 2023-01-10  发布在  Ruby
关注(0)|答案(4)|浏览(185)

我先跑: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

jc3wubiy

jc3wubiy1#

直接进入控制台

rails console

然后输入

ActiveRecord::Migration.drop_table(:users)

然后退出控制台并

rake db:migrate
2izufjch

2izufjch2#

你一定是按照Marsatomic的说法创建了一个表。运行

bundle exec rake db:migrate:status

然后查看迁移历史记录,看看是在哪里创建的。如果看到了,可以回滚迁移,删除创建它的迁移文件,然后重新运行迁移。如果没有看到,则一定是在没有迁移的情况下创建了这个表。此时,您应该按照Marsatomic在上面的评论中的指示进行操作。

q3aa0525

q3aa05253#

您可以使用'db:reset',它== 'db:删除db:创建db:迁移'

kyks70gy

kyks70gy4#

直接进入控制台

rails db:reset

直接进入控制台

bundle exec rails db:migrate

相关问题