我们正在进行一个使用MySQL存储数据的项目。在进入生产服务器之前,我们在测试服务器上进行开发和测试。在开发过程中,我们通过在表中添加/更改列或向数据库中添加更多表来对数据库进行结构更改。
如何在不破坏现有数据的情况下将这些更改从测试服务器传播到生产服务器?
我们的测试服务器在Mac上,生产服务器在上。MySQL的版本为5.1.39。谢谢你的阅读和帮助。
发布于 2009-11-24 17:46:21
这在StackOverflow也许更合适,但我会给你两分钱。
这是您需要解决的应用程序部署过程的一部分。您需要查看生产服务器上的数据库模式和测试服务器上的模式,然后准确地确定使它们匹配所需的更改。你得逐个看,逐个看。根据所需的更改,您可能无法进行非破坏性部署。有些更改具有侵入性,因此唯一的选择是迁移数据(有时这意味着导出和重新加载数据,可能在两者之间进行一些数据操作,但希望这意味着在生产数据库中创建一个替换表,并使用SQL将旧表的内容转储到其中(可能需要进行一些操作)。
今后,我建议在开发过程中突出地记住数据库的更改。请始终记住,您必须将这些更改输入到生产服务器中,如果您在进行更改时跟踪这些更改,并计划如何部署这些更改,则可以更轻松地完成部署。
发布于 2009-11-24 17:36:13
我想这是堆叠溢出的。
您可以将您的更改放在。命令行,或者具有像phpmyadmin这样的前端。
CREATE TABLE "table_name"
("column 1" "data_type_for_column_1",
"column 2" "data_type_for_column_2",
... )若要修改表:
ALTER TABLE table_name
ADD ( column_1 column-definition,
column_2 column-definition,
...
column_n column_definition );发布于 2009-11-24 18:18:29
正如其他人所说,这是一个堆积如山的问题.但是我在这里的时候..。
看看现代web应用程序开发框架是如何处理这个问题的。Rails有一种很棒的处理方法,称为“迁移”,它基本上要求您分别描述每个模式更改,然后跟踪当前的模式版本,并应用使数据库与当前现实保持同步所需的模式更改。这是一个改变生活的特征。
https://serverfault.com/questions/87854
复制相似问题