我正在使用 django 框架进行项目,并使用控制版本系统将我的代码与其他人同步。但我不知道如何组织数据库。在 django 中,任何参与项目的人都可以更改 django 模型,并告诉“syncdb”将模型对象与 db 同步。但是其他人不知道这个变化,它的代码修订可能不起作用。请告诉我一些解决这个问题的方法(也许是不同的数据库或其他东西)。
谢谢,原谅我的英语:)
我正在使用 django 框架进行项目,并使用控制版本系统将我的代码与其他人同步。但我不知道如何组织数据库。在 django 中,任何参与项目的人都可以更改 django 模型,并告诉“syncdb”将模型对象与 db 同步。但是其他人不知道这个变化,它的代码修订可能不起作用。请告诉我一些解决这个问题的方法(也许是不同的数据库或其他东西)。
谢谢,原谅我的英语:)
您必须与项目中的人员进行实际交谈。
如果有人更改了任何数据库模型,他们必须实际告诉其他人有关更改的信息。这不是 Django 问题。
想想任何 SQL 数据库——没有 Django。当 DBA 删除表时,他们必须告诉所有人他们更改了数据库。否则所有使用表格的程序都会中断。
模型定义很特殊,谁能改变这个必须告诉其他人。
您必须对受版本控制的数据库进行初始备份。之后,您必须将所有修改脚本放在同一个版本控制上。像这样的东西:
/数据库(在存储库中)
...
我很好奇...如果您将 MDF 和 LDF 文件置于源代码控制之下会发生什么?当然,如果你的表是空的,而你只有数据库的结构......
我不确定你的问题;但请记住,在 Django 上,syncdb 只创建新表。它不会改变现有表。
例如,如果您只是添加一个新字段,则 syncdb 不会做任何事情。
还可以看看 deltasql。您可以在http://www.gpu-grid.net/deltasql进行测试(用户名:管理员密码:testdbsync)并从http://sourceforge.net/projects/deltasql ciao 下载 :-)
听起来你想要迁移。
例如: http ://www.aswmc.com/dbmigration/
您可能还想添加功能单元测试来实际测试架构是否符合预期,这样当测试失败时,您可以看到这是架构更改,并审核它是否会影响应用程序的其他部分。如果没有,请修复您的测试以考虑新架构。