django.db.utils.OperationalError: (3780, “Referencing column ‘sku_id‘ and referenced column ‘id‘ in

django.db.utils.OperationalError: (3780, "Referencing column 'sku_id' and referenced column 'id' in foreign key constraint 'tb_order_goods_sku_id_e335e3b1_fk_tb_sku_id' are incompatible.")
具体来说就是建表时 执行数据库迁移命令后报这个错  提示所创建的表中的外键与其所关联的那张表的主键类型不匹配

解决办法:

先正常执行python manage.py makemigrations和python manage.py migrate

然后去数据库可视化软件navicat里

假设刚才创建的表为A表   其中所报错的外键所关联的表为B表

找到B表-右键设计表-查看主键类型-记下来

然后找到A表-右键设计表-将报错的外键的类型改为与B表主键的类型相同-点击保存

回到pycharm 再次输入python manage.py migrate

会发现以下报错

这是因为在执行python manage.py migrate 时 django会再次创建表 而表在第一次执行python manage.py migrate就已被创建 所以其实在原则上 根本就不必再执行python manage.py migrate了  因为表已经创建好 而报错的字段也在navicat里修改好 但如果不处理这个错误 之后你再操作模型表里其他字段 然后执行数据库迁移命令的时候 还是会报这个错

解决办法:

输入python manage.py migrate --fake

这是因为使用 --fake 选项时,makemigrations 命令会生成迁移脚本,但不会实际应用它们。这可以用来处理那些在开发过程中可能会多次修改的迁移。

出现以下的样子就代表修改成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值