解决SQLite3中表已存在的问题

前言

我在搭建个人博客的过程中,遇到了问题:
在执行rails db:migrate时出现了报错:
SQLite3::SQLException: table "comments" already exists:
这句话的意思时资料库中已经存在了"comments"这个表,分析原因,应该是在我之前新建一个分支用来做comment model,后来我把它直接删除了,重新开一个分支再次做comment model然后产生了冲突。

解决办法:

终端依次执行:
sqlite3 db/development.sqlite3这行代码是进入sqlite3后台
drop table table_name;这行代码是删除表,其中table_name是你要删除的表的名称
.quit这行代码是退出sqlite3后台
第一行命令是进入sqlite3的后台,进入sqlite3后台后,可以通过输入.help查看指令

image

此时,执行.tables就可以看到资料库中所有的表,比如我的资料库中的表为:
image

打开schema.rb也能看到对应的表:
image

然后执行drop table comments;就可以把comments这个表删除掉:

image

再次进sqlite3后台,输入.tables可以看到comments这个表已经没有了:
image

不过此时schema.rb中的表还没有发生变化,没有关系,因为schema.rb不是实时更新的。
接着使用.quit退出后台,重新执行rails g model comment建立comment的modle,再执行rake db:migrate就更新资料库schema.rb,新的comments table就生成了。

你可能感兴趣的:(解决SQLite3中表已存在的问题)