zoukankan      html  css  js  c++  java
  • 【Django数据库】如何将一个表自定义的key列还原成id列作为key

    【问题】makemigrations是会要求id输入默认值

    例如下表UserVerifyCode,自定义了idUser这个key

    image

    修改成如下,去掉idUer的主键属性

    image

    使用python manage.py makemigrations,id是新增列,不能为空,所以必须输入默认值

    image

    解决办法

    Step1:清空表的数据

    Step2:上图上选择1方法,输入int(0)

    image

    Step3:

    id列我们的都知道,实际上不需要默认值,这时候需要去makemigrations文件夹下,修改合并文件

    文件目录

    image

    删除default=0, 代码

    image

    Step4 尝试migrate

    报错有多个主键

    image

    Step5

    分析makemigrations文件

    发现是先添加id主键,再alter原来的主键idUser

    image

    Step6

    尝试交换顺序重新migrate,出现如下提示,是makemigrations执行migrate时部分成功

    前面表创建成功,但是主键更换失败,删除userlog表,重新migrate

    image

    Step7

    drop userLog表之后再migrate

    image

    migrate成功

    image

    主键更新成功

    image

    好记性不如烂笔头
  • 相关阅读:
    2017ICPC南宁补题
    H. The Game of Life
    I
    Twice Equation
    (贪心+队列)String
    Marcin and Training Camp
    莫比乌斯函数模版
    HDU-1695 莫比乌斯反演
    Steps to One DP+莫比乌斯反演
    Educational Codeforces Round 62 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/inns/p/5516503.html
Copyright © 2011-2022 走看看