Ruby on Rails迁移返回Killed:9?

时间:2015-10-07 21:46:43

标签: ruby-on-rails ruby database migration

我在Rails数据库中遇到了一个真正的问题,我创建了一些包含以下内容的迁移...

def change
change_column(:users, :phone, :integer, limit: 100000000)
end

这显然引发了一个巨大的错误,虽然它似乎有效,我不知道我在做什么,但是我删除了迁移并创建了另一个尝试将列更改回其原始设置,作为正常整数。

这次新迁移不起作用,当我再次尝试迁移数据库时,它给了我这个错误......

Killed:9

我不知道这是什么,甚至不知道如何处理它。

有人可以为我解释一下吗? 我非常感激。

2 个答案:

答案 0 :(得分:1)

您应该阅读有关整数属性的:limit option

我建议你使用字符串类型代替电话属性而不是整数

<强>更新

将更详细地回应:

您在迁移中使用的

:limit选项用于在与整数二进制文件以字节为单位 >列类型。 因此,在迁移过程中,您尝试将:phone列更改为整数并请求 100000000 字节。

现在请记住,例如,可以用 8字节编码的最大整数是 9 223 372 036 854 775 807

所以当你开始迁移时所得到的一切都是内存不足。

这适用于SQlite,但如果您将PostgreSQL用于数据库 - 当您尝试运行此迁移时,您会收到错误。不了解MySQL

答案 1 :(得分:0)

我已设法通过加载我的应用程序的旧副本来删除此问题,但我保留了这些文件,因为我将尝试解决问题,以便找出如何删除问题以供将来参考。