Ruby Rails 迁移返回 Killed:9?

Ruby on Rails migration returning Killed:9?

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

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

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

这个新的迁移没有成功,当我再次尝试迁移数据库时,它给了我这个错误...

Killed:9

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

有人可以帮我解释一下吗? 非常感谢。

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

而且我建议您对 phone 属性使用字符串类型而不是整数

更新

将更详细地回复:

当与 integer 一起使用时,您在迁移中使用的

:limit 选项用于请求最大列长度 以字节为单位 binary 列类型。 因此,在您的迁移中,您尝试将 :phone 列更改为整数并请求它 100000000 字节。

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

因此,当您开始迁移时,您得到的所有内容都已超出内存。

这适用于 SQlite,但如果您将 PostgreSQL 用于数据库 - 尝试 运行 此迁移时会出现错误。不知道 MySQL

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