如何升级MySQL数据库:添加列,添加表

我们正在开发一个使用MySQL来存储数据的项目。 在推出到我们的生产服务器之前,我们在testing服务器上开发和testing。 在开发过程中,我们通过在表中添加/更改列或向数据库添加更多表来对结构进行更改。

我们如何将这些更改从testing服务器传播到生产服务器而不破坏现有数据?

我们的testing服务器在Mac OS X上,生产服务器在Red Hat Enterprise上。 MySQL的版本是5.1.39。 感谢您的阅读和帮助。

这可能会更适合在StackOverflow,但我会投入我的两分钱。

这是您需要弄清楚的应用程序部署过程的一部分。 您需要查看生产服务器上的数据库模式和testing服务器上的模式,然后确定需要进行哪些更改才能使其匹配。 你将不得不一个接一个地逐个查看表格。 根据所需的更改,您可能无法进行非破坏性部署。 一些变化是足够侵入性的,唯一的select是迁移数据(有时这意味着导出和重新加载,可能在其间有一些数据操作,但希望这意味着在生产数据库中创buildreplace表并使用SQL转储内容的旧表(可能有一些操作))。

将来,我会build议在开发过程中明确记住数据库的变化。 请记住,您必须将这些更改导入生产服务器,并且如果您在更改时跟踪更改,并计划部署方式,则可以更轻松地完成部署。

我认为这属于计算器。

你可以在你的更改中进行sql。你可以使用命令行,也可以使用像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 ); 

正如其他人所说,这是一个stackoverflow问题…但是,嘿,当我在这里…

研究现代Web应用程序开发框架如何处理这个问题。 Rails有一个很好的处理方法,称为“迁移”,基本上要求您分别描述每个模式更改,然后跟踪当前模式版本并应用所需的模式更改以使数据库与应该同步成为当前的现实。 这是一个改变生活的function。

我们倾向于通过两种方式进行pipe理。

  • 好的。

    对于Django项目,我们使用Django Evolution ,基本上和womble描述的Rails“迁移”一样。 这是pipe理模型更改并自动实现它们的框架。

  • 不太好。

    如果我们不太幸运,并且不得不处理PHP项目,那么我们规定开发人员必须检查其相关代码提交中的SQL更改,并将其存储到存储库中的公共位置。 SQL更改包含两件事情; 一个修改数据库的干净语句和一个反映数据库新状态的完整模式。 我们有一些工具可以简化收集这些信息的过程并将其纳入可接受的格式。 在代码部署时,包含更改语句的SQL文件将针对数据库执行。