前言
我在搭建个人博客的过程中,遇到了问题:
在执行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
查看指令
此时,执行
.tables
就可以看到资料库中所有的表,比如我的资料库中的表为:image
打开schema.rb也能看到对应的表:
image
然后执行drop table comments;
就可以把comments这个表删除掉:
再次进sqlite3后台,输入
.tables
可以看到comments这个表已经没有了:image
不过此时schema.rb中的表还没有发生变化,没有关系,因为schema.rb不是实时更新的。
接着使用
.quit
退出后台,重新执行rails g model comment
建立comment的modle,再执行rake db:migrate
就更新资料库schema.rb,新的comments table就生成了。
网友评论