通过Django模型迁移覆盖表的风险?

2024-09-29 23:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试更新我的Django模型,以合并一些新功能,但是在运行“makemigrations”之后,控制台输出让我担心我会覆盖数据库中的其他表。在

基本上,在我的模型.py,我有8个模型。一个是全新的,一个只是修改过的。我想将这些更改迁移到数据库中,以便运行“makemigrations”。一个迁移的文件被创建了(我注意到没有其他文件——可能是最初创建这些文件的同事出于任何原因删除了它们)。控制台输出为:

- Create model ModelNew
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelUpdated

为什么它说创建模型?是因为,据Django所知,这是第一次执行迁移吗?或者它计划重写所有其他的表(这会彻底杀死我们的应用程序,并导致非常糟糕的一天)?在

我还注意到有些型号

^{pr2}$

其他人,只是, db_tablespace='sometable'

其他人,什么都没有。有人对此有什么想法吗?在


Tags: 文件djangopy模型功能数据库modelcreate
1条回答
网友
1楼 · 发布于 2024-09-29 23:26:32

Django在进行迁移时不询问数据库本身;它根据以前的迁移和模型的当前状态构建一个图。因此,如果之前没有迁移,Django将从头开始创建它们。这不会覆盖您的表,但实际上也不会起作用,因为它会尝试创建表,而数据库会拒绝。在

一种选择是临时恢复更改并再次运行makemigrations以回到正确的起点,然后使用 fake-initial运行该迁移,将其标记为已应用而不实际执行,然后重新应用更改并再次运行makemigrations。在

相关问题 更多 >

    热门问题