现有数据库的新 Django 应用程序初始数据库迁移
New Django app initial DB migrations of an existing database
我有一个现有的数据库,里面装满了一堆数据。我想迁移到 Django,所以我继续使用 python manage.py inspectdb
创建了必要的模型。除了删除 managed = False
之外,我没有做任何更改,因为我希望 Django 管理表(可能是初始迁移的错误?)。
现在模型已准备就绪,我如何生成第一个迁移文件,以便我可以开始更改字段以生成其他迁移(在这里和那里重命名字段)。我知道 python manage.py migrate
会处理 Django 特定模型的创建,但实际上不会创建任何迁移文件?一些消息来源指出第一个迁移文件应该是 运行 和 --fake
,所以它没有被应用。下一个迁移文件会不会记得 运行 第一个是假的,只应用下一个?
您希望 makemigrations
创建迁移。 migrate
命令应用迁移,它不创建它们。
您可以使用 --fake-initial
选项,这样 Django 就不会尝试创建已经存在的 table。请注意 --fake
和 --fake-initial
是两个不同的命令。
当您 运行 migrate
时,django_migrations
table 会更新以存储当前应用的迁移。迁移文件本身没有改变。 --fake
命令更新 django_migrations
table 而无需 运行 迁移。这意味着如果您使用不当,您的数据库和 django_migrations
table 可能会不同步,这可能很难修复。
我有一个现有的数据库,里面装满了一堆数据。我想迁移到 Django,所以我继续使用 python manage.py inspectdb
创建了必要的模型。除了删除 managed = False
之外,我没有做任何更改,因为我希望 Django 管理表(可能是初始迁移的错误?)。
现在模型已准备就绪,我如何生成第一个迁移文件,以便我可以开始更改字段以生成其他迁移(在这里和那里重命名字段)。我知道 python manage.py migrate
会处理 Django 特定模型的创建,但实际上不会创建任何迁移文件?一些消息来源指出第一个迁移文件应该是 运行 和 --fake
,所以它没有被应用。下一个迁移文件会不会记得 运行 第一个是假的,只应用下一个?
您希望 makemigrations
创建迁移。 migrate
命令应用迁移,它不创建它们。
您可以使用 --fake-initial
选项,这样 Django 就不会尝试创建已经存在的 table。请注意 --fake
和 --fake-initial
是两个不同的命令。
当您 运行 migrate
时,django_migrations
table 会更新以存储当前应用的迁移。迁移文件本身没有改变。 --fake
命令更新 django_migrations
table 而无需 运行 迁移。这意味着如果您使用不当,您的数据库和 django_migrations
table 可能会不同步,这可能很难修复。