python manage.py migrate
报错日志
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, “Table ‘stossser’ already exists”)
不能保证每一次的执行都是正确的,第二次执行的时候会提示之前创建的表已经存在,鉴于这种情况该何去何从,Django已经考虑到这点了;
在使用 Django 进行数据库迁移时,如果你尝试执行 python manage.py migrate
来创建一些已经存在的表,会导致命令失败,因为 Django 会检查数据库表的状态与模型定义是否一致。如果你想要跳过这些已存在的表,可以使用 --fake
选项。
执行以下命令可以跳过那些已存在但预期会变化的表的迁移:
python manage.py migrate --fake
使用 --fake
选项时,makemigrations
命令会生成迁移脚本,但不会实际应用它们。这可以用来处理那些在开发过程中可能会多次修改的迁移,而不需要每次都应用它们。
但请注意,长期使用 --fake
可能会导致数据库和模型之间出现不一致。因此,在生产环境中,你应该尽量避免使用 --fake
,并确保数据库迁移的正常执行。
如果你只是想跳过某个特定的迁移,你可以使用 --no-gather-input
选项,然后手动指定要跳过的迁移:
python manage.py migrate --no-gather-input <app_label.migration_name>
这会跳过指定的迁移,而不会影响其他迁移。在执行这样的操作时,请务必谨慎,并确保你了解每项迁移的影响。
大功告成~~~