我正在使用数据库在Intranet上工作。这是php和mysql。我正在使用Git进行版本控制。
我的问题是我经常需要更改数据库结构。目前,我们有一个文件,用于编写我们对数据库所做的操作,每当我们执行拉动操作时,我们都应该在该文件中应用最新的命令。它看起来像这样:
#2017-08-14 TAN: Remove swedish char from DB column name.
ALTER TABLE artiklar CHANGE COLUMN `alarmvalue` min_stored_amount int(11) DEFAULT '0';
#2017-08-29 SAG: Added changelog in database
CREATE TABLE `changelog` (
`id` int(6) unsigned NOT NULL AUTO_INCREMENT,
`reg_date` timestamp NOT NULL,
`comment` varchar(10000) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 2017-08-25 TAN: Add new role "monitorStock" to person.
ALTER TABLE personal ADD COLUMN monitorStock int(1) DEFAULT '0' after qc;
这两者似乎都不必要,而且容易出错。这很容易忘记但在这种情况下我们很快就会注意到它,但它可能会导致更严重的问题。只要我只将表或列添加到现有表中,一切都很好,但如果我重命名或删除任何内容,则无法撤消它。它必须是解决这个问题的更好方法。
简而言之,我希望版本控制数据库结构,而不是其内容。