我是一名
PHP软件开发人员,我正在寻找解决这个问题的最佳解决方案.我正在创建一个脚本,将来会有新版本,包括新功能,错误修正等.我知道如何在升级脚本中进行代码更改,但是我正在开发的脚本使用MysqL将数据存储在多个表中.
现在问题是,我已经想出了如何为初始版本制作安装脚本,但是制作可以将任何以前的版本升级到最新版本的升级脚本的最佳解决方案/方法是什么?最新版本有新的MysqL表(不是问题),但它也会更改数据库结构(新列,删除列等).我将在下面创建一个场景,以更好地描述我担心的问题.
v0.1.0 – Initial Release
v0.1.1 – Has a new database table and some fields added to the table structure
v0.2.0 – Has more new fields added to different tables
My concern is the the upgrade v0.1.0 > v0.2.0 because there were changes between the two versions.
更新我可能已经提到我只使用GitHub作为我的VCS代码.所有代码更改都保存在那里,并在安装或升级脚本中进行代码更改,我只是计划覆盖用户的当前文件,因为它们不应该在类/函数文件中包含任何数据.
根据我的经验,最好的方法是在MysqL中创建一个版本控制表,其中包括应用程序的版本号以及任何更改数据库结构的查询.基本上:
原文链接:/php/134584.htmlCREATE TABLE versions ( app_version DOUBLE NOT NULL,query TEXT,created TIMESTAMP NOT NULL );
使用我们的安装脚本,我们会记下我们的初始应用程序版本和目标应用程序版本,并选择需要执行的所有查询才能使用.
SELECT query FROM versions WHERE app_version > {$initialAppVersion} AND app_version <= {$destinationAppVersion} ORDER BY created ASC;
在PHP中:
foreach ($resultset AS $row) { $stmt = $db->prepare($row['query']); try { $stmt->execute(); } catch (Exception $e) { /* handle exception */ } }