首页 > 技术文章 > Django走过的坑

lovepy3 2019-05-20 15:42 原文

修改现有表结构时报错:

You are trying to add a non-nullable field 'addr' to author without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py

解决:添加字段是设置一个默认值default即可

birthday = models.DateField(default='')
addr = models.CharField(max_length=255,default='')

 

 

Running migrations: No migrations to apply.(django不能创建数据库中的表的问题)

第一步:

    删除该app名字下的migrations下的__init__.py等文件。

第二步:

    进入数据库,找到django_migrations的表,删除该app名字的所有记录。

第三步:执行下面这两条命令:(在项目目录下)

python manage.py makemigrations

python manage.py migrate

原因:

django_migrations表记录着数据库的对应表的修改记录。

每次修改后,都执行第三步的命令,然后在第一步的文件夹下生成修改的文件,django_migrations表记录修改的变更过程。

django.db.utils.InternalError: (1050, "Table 'django_content_type' already exists")

使用 python manage.py migrate --fake

使用上面的方法可以忽略一些错误.

另外一个解决办法就是进去到数据库中,删除所有的表.然后再使用 python manage.py makemigratios和 python manage.py migrate 即可.

 

推荐阅读