您的位置:首页 > 编程语言 > PHP开发

数据库自动更新的实现--php项目(1)

2017-09-17 23:31 309 查看
实习的时候做一个php的项目,项目中使用了mysql数据库,由于项目规模和需求的变更,经常需要对数据库的设计进行更新,有的时候需要加一些字段,有的时候需要加一些表,每次在不同的开发人员的电脑上和在服务器上部署项目的时候,都要手动更新数据库,这样比较麻烦,也比较容易出错,很难保证这么多主机上所有的数据库都完全一致,所以师兄就让我研究了一下如何将数据库更新写到程序中。

查阅了一些资料,好多人都是将更新写到升级脚本中,有的比较难理解,而且直接用在php项目中不太好用。github上也有很多人在做相关php数据库更新的项目,项目整体而言比较大,完全可以作为一个单独的 开发项目来做,当然实现的功能也比较全面。

由于这个项目中需要更新的数据库内容并没有那么复杂,而且几乎不需要去删除任何东西,只涉及到增和改,就考虑自己来写一些源码进行实现,尽量保证了源码功能的简洁。但足够更新现有的数据库。本文先说一下实现的思路,不贴源码。

首先要对比已经更新过的数据库和原有数据库之间的差异,当然这个差异有一定的限制,只比较了更新后的数据库中有哪些东西是原数据库中没有的。当然比较的前提是本地存在这两个数据库,一般本地只有一个数据库(原数据库),所以我将更新后的数据库导出sql文件,在php后端程序中运行了这个sql文件,将它变为可以与本地原有的数据库进行比较的,当更新完成后,再将其删掉(其实这个数据库就是为了和原数据库进行比较才创建的)。

其次,比较的时候,先比较两个数据库的表是否完全一致,如果不一致,一般是更新的数据库中添加了表(一般不删表,因为表中可能存有某些有意义的历史数据,删除会有影响,所以一般不删表或字段),那就在本地数据库将表建好。若两个数据库表一致(即更新的数据库中未添加新表),则比较两个数据库中相同表的表结构是否一致,若不一致,则说明表中增加了字段或修改了字段的类型或者修改了默认值,则对该表的结构进行更新。实现的思路还是比较简单清晰。

当时数据库更新作为系统的一个功能放进系统,我就将这个功能放在了系统登录的时候进行触发。但是数据库更新操作是有风险的,经常会出现更新报错的情况,这样就会导致系统无法登录,所以更新操作不能每次都做,需要在特定的条件下触发,也就是在需要更新的时候才去触发,所以每次都要去对比系统数据库的版本号,如果当前版本已经是最新版本,则不需要对其进行更新。

虽然只是一个系统的一个子功能点,但是实现的过程中还是踩了不少雷,后面会继续介绍部分实现的php源码和遇到的一些问题以及解决方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐