You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新旧Django版本主键数据类型不兼容导致外键创建失败的解决方案咨询

新旧Django版本主键数据类型不兼容导致外键创建失败的解决方案咨询

我现在遇到了数据库迁移的问题:我在Django版本大于5的新应用里,使用了一个由旧版Django 1.4创建的数据库。问题出在主键的数据类型上——旧版Django用的是AutoField,对应数据库里的int类型;而新版Django默认的主键类型是bigint。

现在我创建了一个新模型,其中包含指向旧模型的外键,结果遇到了下面的错误:

Column 'tbl1.id' is not the same data type as referencing column 'tbl2.field_id' in foreign key 'tb1_field_id_tbl2_id'

我该怎么解决这个问题呢?

目前只有给models.ForeignKey设置db_constraint=False能暂时解决,但我不想承担这个风险。

我已经尝试过这些方法,但都没成功:

  • 修改DEFAULT_AUTO_FIELD为django.db.models.AutoField
  • 显式把外键所在表的id设为AutoField,但这个表依赖太多,导致其他关联关系崩溃
  • 显式指定to_field="id"映射到对应字段
  • 设置db_constraint=False——能解决但不是最优方案
  • 为新模型创建使用AutoField的迁移,但Django似乎仍然把外键表的类型识别为bigint

备注:内容来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:13:09