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