所以我有这个django安装,其中有一堆迁移脚本。他们看起来像这样:
00001_initial.py
00002_blah_blah.py
00003_bleh_bleh.py
现在我知道这些是"数据库建设"这些脚本将获取models.py
中定义的内容并将其针对数据库运行到"创建"桌子和东西。
我想创建一个新表(所以我在models.py中创建了它的定义)。为此,我复制了另一个模型类并编辑了它的名称和字段,一切都很好。让我们称之为新的模型类'繁荣'。
我现在的问题是如何创建"这个繁荣表使用迁移脚本和繁荣模型?
我担心我可能会意外地破坏已经存在于DB中的任何内容。如何运行迁移以仅创建热表?如何专门为其创建迁移脚本?
我知道它与manage.py
有关并正在运行migrate
或runmigration
(或者是sqlmigrate
?...我很困惑)。在创建繁荣表时,如果您知道我的意思,我不希望数据库 boom :)
答案 0 :(得分:6)
首先,创建数据库的备份。将其复制到您的开发机器。尝试一下。这样一来,如果它真的发展并不重要"繁荣"出于某种原因。
首先要做的是
python manage.py showmigrations
这会显示所有现有的迁移,并且 应该显示它们已应用[X]
。
然后,
python manage.py makemigrations
为新模型创建一个新的迁移文件(名称00004 _...)。
然后做
python manage.py migrate
申请。要撤消它,请使用
返回到迁移00003的状态python manage.py migrate <yourappname> 00003
答案 1 :(得分:2)
我现在的问题是如何使用“创建”此繁荣表 迁移脚本和繁荣模型?
./manage.py makemigrations
我担心我可能会意外地破坏任何事情 已经在DB。
迁移的全部意义在于它不是
我知道它与manage.py和运行迁移有关 或者迁徙
有关详细信息,请参阅:https://docs.djangoproject.com/en/1.10/topics/migrations/
请放心,您的数据库不会繁荣! : - )
答案 2 :(得分:2)
Django中有两个迁移步骤。
./manage.py makemigrations
将创建您看到的迁移文件 - 这些文件描述了应该对数据库进行的更改。
您还需要运行
./manage.py migrate
这将应用迁移并在SQL中实际运行alter table命令以更改实际的数据库结构。
通常添加字段或表格不会影响数据库中的任何其他内容。在更改或删除现有字段时要特别小心,因为这可能会影响您的数据。
两个步骤的原因是您可以在开发计算机上进行更改,并且一旦提交迁移文件并将其发布到生产环境,就会很高兴。然后在生产计算机上运行migrate命令,使生产数据库处于与开发机器相同的状态(假设您的数据库启动相同,则无需生产生产数据。)