Django ORM migration giving "ValueError: invalid literal for int()" on IntegerField
Django ORM migration giving "ValueError: invalid literal for int()" on IntegerField
一步一步,这就是我如何到达现在的位置...
在我的数据库中更改我的 Order
table 以包含 flowertype = IntegerField()
之后,我尝试 运行 命令 python manage.py migrate
,但被告知我不能'在我 a) 将默认值设置为 IntegerField()
或 b) 让 django 设置它之前,不要继续迁移为了我。我选择 a 并将默认值设置为 'something'
只是为了消除错误。
意识到我不应该将字符串放入 IntegerField()
,我尝试了以下方法来解决此问题。
1) 试图将 models.IntegerField()
重置为 models.IntegerField(default='1')
2) 尝试使用 django-reset 重置我的 sql 数据库,它给了我很多错误,例如 `ImportError: cannot import name sql_delete
3) 注释掉我的 Order
模型然后 运行 makemigrations
& migrate
无济于事。
迁移在 python 中失败,因此它从未进入数据库。您应该保留所有内容,然后进入 migrations/
文件夹并删除添加 flowertype
字段的迁移(这将是最新的)。然后再次 运行 python manage.py makemigrations
,但要确保在模型定义中设置了 flowertype = IntegerField(default=1)
(not default='1'
)。
编辑进一步解释:
当您 运行 命令 makemigrations
时,django 检查 python 中的所有模型定义并将它们与数据库中的内容进行比较。如果两者不匹配,django 将创建一个迁移文件,该文件将更新数据库以反映模型定义,因为它们在您的 python 代码中定义。这就是 migrate
命令的作用,它 运行 所有新的迁移文件。
因此,您第一次 运行 makemigrations
时,创建了一个迁移文件,其中向 Order
table 添加了一列,并尝试设置值每行到 'something'
.
这立即失败了,因为它试图将 str
放入 int
字段。
因为它失败了,除非你删除文件,任何时候你 运行 migrate
,django 都会继续尝试 运行 该脚本。有两种选择 1) 您可以直接进入并手动编辑迁移文件,或者 2) 您可以删除该迁移文件并在修复模型定义后重新创建它。
一步一步,这就是我如何到达现在的位置...
在我的数据库中更改我的 Order
table 以包含 flowertype = IntegerField()
之后,我尝试 运行 命令 python manage.py migrate
,但被告知我不能'在我 a) 将默认值设置为 IntegerField()
或 b) 让 django 设置它之前,不要继续迁移为了我。我选择 a 并将默认值设置为 'something'
只是为了消除错误。
意识到我不应该将字符串放入 IntegerField()
,我尝试了以下方法来解决此问题。
1) 试图将 models.IntegerField()
重置为 models.IntegerField(default='1')
2) 尝试使用 django-reset 重置我的 sql 数据库,它给了我很多错误,例如 `ImportError: cannot import name sql_delete
3) 注释掉我的 Order
模型然后 运行 makemigrations
& migrate
无济于事。
迁移在 python 中失败,因此它从未进入数据库。您应该保留所有内容,然后进入 migrations/
文件夹并删除添加 flowertype
字段的迁移(这将是最新的)。然后再次 运行 python manage.py makemigrations
,但要确保在模型定义中设置了 flowertype = IntegerField(default=1)
(not default='1'
)。
编辑进一步解释:
当您 运行 命令 makemigrations
时,django 检查 python 中的所有模型定义并将它们与数据库中的内容进行比较。如果两者不匹配,django 将创建一个迁移文件,该文件将更新数据库以反映模型定义,因为它们在您的 python 代码中定义。这就是 migrate
命令的作用,它 运行 所有新的迁移文件。
因此,您第一次 运行 makemigrations
时,创建了一个迁移文件,其中向 Order
table 添加了一列,并尝试设置值每行到 'something'
.
这立即失败了,因为它试图将 str
放入 int
字段。
因为它失败了,除非你删除文件,任何时候你 运行 migrate
,django 都会继续尝试 运行 该脚本。有两种选择 1) 您可以直接进入并手动编辑迁移文件,或者 2) 您可以删除该迁移文件并在修复模型定义后重新创建它。