首页 新闻 赞助 找找看

给网站数据库定期升级,如何实现

0
悬赏园豆:5 [已解决问题] 解决于 2015-05-09 21:59

一套程序提供给多个客户放置于不同的服务器,因为功能需要不断升级,导致升级比较麻烦,如果是程序文件的升级还比较好办,因为都是统一的,但是数据库升级就麻烦了,要只更改数据结构而不更改数据内容,即客户原有的数据不要被覆盖,是在主程序每次有更改结构之后立即记录下SQL语句(有没有自动记录方法?),然后分别让每个客户升级的时候去执行这些SQL语句吗?

ludi的主页 ludi | 初学一级 | 园豆:5
提问于:2015-02-13 15:59
< >
分享
最佳答案
0

一般都是手动的吧。不过像DZ这样的程序是可以自动更新的。

我认为思路是这样:

你需要对每个版本做详细记录,如从1.0到1.1增加了哪些字段、表,修改了哪些数据类型,然后写成相应的SQL语句,保存起来。然后 从1.1到2.0又做了哪些修改,也写成sql语句保存起来。

然后 客户要升级时,你只要跟据他的版本,逐版本升级就ok了。

收获园豆:5
DZCMS | 初学一级 |园豆:5 | 2015-02-26 15:53
其他回答(5)
0

客户原有的数据可以被删除不?

Launcher | 园豆:45045 (高人七级) | 2015-02-13 16:19

不行啊,因为客户已经处于运营阶段,只是我们每年给他升级服务,不断新增功能而已

支持(0) 反对(0) ludi | 园豆:5 (初学一级) | 2015-02-13 16:20

@ludi: 那么如果你更改了表结构,将原来的 5 列变成了 4 列,那么请问,客户的数据库中的对应表怎么变?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 16:22

@Launcher: 客户数据库完全和我这边总的结构一样,即字段名及属性是完全一样的,只是他的数据内容不一样而已,例如他的会员表可能有很多会员记录,而我这边可能没有记录

支持(0) 反对(0) ludi | 园豆:5 (初学一级) | 2015-02-13 16:24

@ludi: 那么你们究竟是要改什么呢?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 16:31

@Launcher: 就比方说你们做一套系统卖给很多客户,必定会不断地去升级完善这套系统,这无可厚非地会去改动数据库的字段(主要是新增字段和新增表),你不可能逐一的通过sql管理工具去重复一次开发阶段对数据库所做的更改吧?

支持(0) 反对(0) ludi | 园豆:5 (初学一级) | 2015-02-13 16:36

@ludi: 你不用比如说,你的说你们具体要修改啥,我最开始根据你说的"原有的数据不要被覆盖",那么我就想到删除列不在你这个“覆盖”范围内,所以问你,然后你告诉我"客户数据库完全和我这边总的结构一样,即字段名及属性是完全一样的,只是他的数据内容不一样而已,例如他的会员表可能有很多会员记录,而我这边可能没有记录",所以我才问你到底修改啥!那么你现在又告诉我"这无可厚非地会去改动数据库的字段(主要是新增字段和新增表)",那么还是那句话,你能把你们的需求讲清楚吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 17:22

@ludi: 那么我们现在确定你们会修改表结构,而且"主要是新增字段和新增表",那么不主要的呢?还是说你们的数据库改动仅仅限制在“新增字段和新增表”这两项上?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-02-13 17:25
0

网站?数据库。。。。。。。。 如果想自动的, 就要像挂马一样…………

原理无非是, 在客户后台嵌入脚本, 隐藏页去做一系列操作。 

奋奋奋 | 园豆:32 (初学一级) | 2015-02-13 16:50

但是要自己也得注意安全性, 你可以在自己的服务器端做个服务, 客户那边的站点来访问, 进行认证, 下载sql脚本进行操作之类的。 

这只是说自动的, 如果手动提示有更新的话, 那更加简单。 

支持(0) 反对(0) 奋奋奋 | 园豆:32 (初学一级) | 2015-02-13 16:53
0

数据库升级一般都是让客户端去执行sql,你可以在更新的时候先执行这个sql就OK了。

kezhiping | 园豆:197 (初学一级) | 2015-02-13 16:50

是的,那么在开发阶段要怎么整理这些sql,有没有一种工具能自动生成这些做过局部修改的sql语句,如果每次更改后就要手动记录SQL语句,太麻烦了吧,而且一般对数据库的修改都是在可视化状态下完成,没有通过写语句去更改数据库字段呢

支持(0) 反对(0) ludi | 园豆:5 (初学一级) | 2015-02-13 16:54
0

其实我知道题主想问啥,就是平时记录嫌麻烦,问有没有不麻烦的方法。

方法我是知道的,就是找别人开发软件,你只要享受结果就好了,麻烦都是别人的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-13 20:13
0

我们都是手动升级,自己把修改的记录成脚本,升级的时候执行一下,关于脚本过多的问题,你可以一年的合并成一个脚本。当年的按照月份合并成一个脚本。记得ddl语句要先执行,所以一般是这部分单独出来。存储过程就是最简单的,反正最多全部执行一下都行。

清海扬波 | 园豆:825 (小虾三级) | 2015-02-26 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册