jon*_*omo 7 migration django postgresql django-south
我尝试运行时收到此错误./manage.py migrate my_app:
django.db.utils.ProgrammingError:列"关联"不能自动转换为类型integer
HINT:指定USING表达式以执行转换.
这听起来很棒,但我不知道南方希望我做什么.我应该手动编辑自动生成的python迁移文件吗?如果是这样,我怎么样 - 我没有看到该文件中的标准SQL.相反,我看到了这个:
# Changing field 'MyTable.associated'
db.alter_column(u'data_mytable', 'associated',
self.gf('django.db.models.fields.IntegerField')()
)
Run Code Online (Sandbox Code Playgroud)
另外,为什么南方没有接受这个并USING自动添加条款?
小智 7
这是我的肮脏黑客:
migrations.RemoveField(
model_name='name_of_the_model',
name='offending_field',
)
然后我将抱怨迁移的操作从AlterField更改为AddField ie
migrations.AddField(
model_name='name_of_model',
name='name_of_field',
field=models.ForeignKey(blank=True, null=True, to='ForeignKeyModel'),
preserve_default=False,
),
Run Code Online (Sandbox Code Playgroud)
```
您必须用db.alter_column以下内容替换原始内容db.execute:
# Changing field 'MyTable.associated'
# db.alter_column(u'data_mytable', 'associated',
# self.gf('django.db.models.fields.IntegerField')()
# )
db.execute(
'ALTER TABLE "data_mytable" '
'ALTER COLUMN "associated" DROP DEFAULT, '
'ALTER COLUMN "associated" DROP NOT NULL, '
'ALTER COLUMN "associated" TYPE INTEGER '
'USING '
'CASE '
' WHEN FALSE THEN 0 ELSE 1 '
'END'
)
Run Code Online (Sandbox Code Playgroud)
当然,WHEN条件可能会根据associated原始类型而改变。
另请参阅此链接。
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |