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

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

我们正在开展一个使用 MySQL 存储数据的项目。我们在测试服务器上进行开发和测试,然后才将其部署到生产服务器。在开发过程中,我们通过添加/更改表中的列或向数据库添加更多表来对数据库进行结构更改。

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

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

答案1

这可能更适合 StackOverflow,但我还是想发表一下我的看法。

这是您需要弄清楚的应用程序部署过程的一部分。您需要查看生产服务器上的数据库架构和测试服务器上的架构,然后弄清楚确切地需要进行哪些更改才能使它们匹配。您必须逐表逐列地检查。根据所需的更改,您可能需要不能进行非破坏性部署。有些更改具有足够的侵入性,唯一的选择就是迁移数据(有时这意味着导出并重新加载数据,中间可能还会进行一些数据操作,但希望这意味着在生产数据库中创建一个替换表并使用 SQL 将旧表的内容转储到其中(可能还会进行一些操作))。

将来,我建议在开发过程中重点关注数据库更改。始终记住,您必须将这些更改放入生产服务器中,如果您在进行更改时跟踪更改并规划如何部署它们,则可以使部署变得容易得多。

答案2

我认为这属于 stackoverflow。

您可以在命令行中或使用 phpmyadmin 等前端来执行 sql 更改

 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 );

答案3

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

了解现代 Web 应用程序开发框架如何处理此问题。Rails 有一种很棒的处理方法,称为“迁移”,基本上要求您分别描述每个架构更改,然后跟踪当前架构版本并应用所需的架构更改,以使数据库与当前实际情况同步。这是一个改变生活的功能。

答案4

我们倾向于用两种方式来管理这些问题。

  • 好的。

    对于 Django 项目我们使用Django 的演变它基本上和 Womble 描述的 Rails“迁移”功能相同。它是一个管理模型变更并自动实现这些变更的框架。

  • 不太好。

    如果我们不太幸运,必须处理 PHP 项目,我们规定开发人员必须将他们的 SQL 更改与相关代码提交一起签入存储库中的公共位置。SQL 更改包括两部分:修改数据库的干净语句和反映数据库新状态的完整架构。我们有一些工具可以简化收集这些信息并将其转换为可接受格式的过程。在代码部署时,将针对数据库执行包含更改语句的 SQL 文件。

相关内容