【发布时间】:2013-03-26 20:08:03
【问题描述】:
我正在寻找可以跨环境正确处理我的项目的 mysql 表更新的想法。我查看了CI DB Forge 课程,我相信这可能对我有所帮助。我的想法是:
- 为每个数据库安装、表升级或更改创建一个新文件。该文件将包含执行每个相关任务的原始 mysql 查询
- 在加载任何控制器之前通过挂钩运行升级脚本
- 继续加载项目
这是正确的想法吗?这与 Magento 处理每个扩展的数据库升级的方式非常相似。
【问题讨论】:
-
如果您有足够的纪律性来为每次更改写出 SQL,那就太好了。但是,如果您有多个环境(超过 2 个),那么即使这样也可能还不够。我最近一直在使用 mysql workbench db 比较工具来迁移数据库更改;它运作良好。
-
我正在使用开发、测试和生产环境。数据库更改本质上很简单,我目前只通过 Navicat 复制/粘贴来处理它们。我只是在寻找一种更专业的方法来处理它。工作台工具是否真的会生成 sql 查询来修补升级?
-
我刚刚了解到 Navicat 在我拥有的版本中内置了数据和结构比较和同步工具,这很棒,但我仍然喜欢编程解决方案。
-
还有一个 mysql 命令行实用程序来区分数据库并生成 SQL 以合并它们:dev.mysql.com/doc/workbench/en/mysqldbcompare.html 我不认为在生产服务器上自动运行 sql 更改是安全的 - 某些结构变化可能会破坏您的网站;最好手动查看您将要应用的更改。
标签: php database codeigniter