我是一名 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 中创建一个版本控制表,其中包括应用程序的版本号以及任何更改数据库结构的查询。所以本质上:
CREATE 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 */ }
}
关于php - 为软件开发人员创建 PHP/MySQL 升级脚本的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5382437/