Django - 迁移命令表示 table 在执行第二个 makemigrations 后存在

Django - Migrate command says that table exists after second makemigrations was executed

我有一个具有相关字段设置的模型。我 运行 manage.py migrate 然后它在我的数据库中创建了一个 table。然后我 运行 manage.py makemigrations 以便它可以创建前缀为“0001”的初始迁移文件。我在我的模型中添加了另一个字段,然后再次 运行 manage.py makemigrations,这创建了另一个前缀为“0002”的迁移文件。当我 运行 manage.py migrate 现在它仍然查看第一个迁移文件,因此抛出 'Table already exists' 的错误。我怎样才能让它只查看最新的迁移文件,以便将新列添加到 table?我正在使用 MySQL.

这永远不会发生,除非 django 检测到(认为)数据库尚未设置,并尝试使用模式初始化 tables。

看起来你的 tables 已经设置好了,但这对 django 来说是未知的。这就是它尝试开始应用第一次迁移的原因 - table 创建和架构包含在其中。

您可以根据您的具体问题使用 --fake--fake-initial 选项,这会告诉 django table 已经设置并准备就绪,并且 迁移。

获取更多信息的有用链接:

django migrations - django documentation

django migrations, a primer - realpython