Django从SQLite迁移至PostgreSQL后执行迁移报table does not exist错误
解决步骤
重建迁移文件
在项目根目录执行命令重新生成所有应用的初始迁移文件:python manage.py makemigrations执行后检查各自定义应用(包括customers应用)的目录下是否生成了migrations文件夹及初始迁移文件。
初始化迁移记录
先执行假迁移,将初始迁移记录写入数据库,避免迁移链断裂导致的依赖报错:python manage.py migrate --fake-initial正式创建表结构
执行全量迁移命令,在PostgreSQL库中创建所有模型对应的表:python manage.py migrate执行完成后即可解决
relation "customers_user" does not exist的报错。恢复备份数据
表结构创建完成后,将你持有的数据库备份恢复到当前PostgreSQL库即可。
异常排查
如果执行迁移时仍存在报错,可先单独迁移Django内置应用,再迁移自定义应用:
python manage.py migrate auth python manage.py migrate contenttypes python manage.py migrate admin python manage.py migrate sessions python manage.py migrate 你的自定义应用名
注意事项
- 后续遇到迁移冲突不要直接删除迁移文件夹,优先使用
--fake参数调整迁移记录即可 - 确认settings.py中
INSTALLED_APPS已经注册了所有自定义应用,避免Django无法识别模型导致不生成对应表
内容的提问来源于stack exchange,提问作者Atif Shafi
相关产品推荐
相关产品推荐

