数据库问题一般可以用rollback命令解决

Published on:

上午,在练习到第三课的5-4 让“群组”与“使用者”产生关联,在完成Step 6: 删除所有“无主”的群组后,网页出现了如下的报错:

为了解决这个问题,我首先考虑是否是在操作步骤中出现了错误,因为很多时间微小的错误可能导致千奇百怪的问题,这也是xdite老师反复强调要只字不差阅读教材的原因。

果然,我发现了一段错误,在Step 1: 新增 user_id 到 group 的 table 里,在执行rail grake db这两个命令中间,有一道任务被我忽略了,如下图:

即我忘记了修改新增的 migration 档案。

好吧,看起来已经为时过晚,有一种常见的方法是切回到上一个branch,然后删除最新的branch重新开始。

不过我想尝试一下是否有其他的解决方法,先Google。

果然找到了一个stackoverflow的网址:
https://stackoverflow.com/questions/4352848/how-to-rollback-just-one-step-using-rake-dbmigrate

其中,有人给出了解决方法:

于是,我先执行rake db:rollback命令,毕竟我只需要回到上次的数据库就行。然后执行rails g migration add_user_id_to_group命令。

很明显,有冲突了,说明根本不需要再执行rails g命令,于是下一步就是执行rails db:migrate命令重塑数据库。

由于之前其他的步骤我已经操作完毕,所以不需要再修改一遍,连delete_all都不需要了。

再次刷新一下网页,正常了。

之前删除掉所有“无主”的群组之后,我尝试点击new group按钮来新建一个group然后出现报错的那个group新建成功了,成功显示在下方。

Comments

comments powered by Disqus