一、问题描述:
当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如:
- 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。
- 数据库状态与迁移文件不同步:你的数据库中已经存在某些表,但迁移文件或 Django 的迁移记录(存储在 django_migrations 表中)不匹配。
- 重复运行初始迁移:你可能多次运行了初始的迁移命令,导致 Django 试图重新创建已经存在的表。
这篇文章将用于不定期更新所遇到的错误和解决办法。
二、迁移命令如下:
python manage.py makemigrationspython manage.py migrate
三、错误整理:
错误一:
```python
pymysql.err.OperationalError: (1050, "Table 'django_session' already exists")
```
- 解决办法:
- 在数据库中找到Django 的迁移记录(存储在 django_migrations 表中),删除掉相关的表记录,我这里是删除掉sessions这条记录。如果你的users表有问题,那就删除掉所有users相关的记录(原表中的数据不会受到影响)。
- 删除掉相关项目文件夹migrations下除了__init__.py的所有文件,例如users下:
- 然后依次执行下面的语句
- 如果你确定数据库中的表是正确的,但迁移记录不正确,你可以使用 --fake 选项来标记迁移为已完成。
python manage.py makemigrations python manage.py migrate --fake # --fake
- 查看结果
错误二:
错误搜集中…