smrtr/mysql-version-control

使用 PHP 编写的 mysql 粗糙版本控制系统

1.3.0 2016-07-22 16:13 UTC

This package is not auto-updated.

Last update: 2024-09-25 12:07:25 UTC


README

一个库中实现有效的 mysql 数据库版本控制。使用简单快捷,但提供了丰富灵活的 API,供那些需要自定义设置的用户使用。

要求

  • PHP >= 5.4
  • Composer
  • MySQL 客户端

使用 Composer 安装

$ composer require smrtr/mysql-version-control:~1.0

版本控制

默认情况下,您的数据库版本将存储在 <project_root>/db/versions。每个版本的 sql 存储在此目录下的一个直接目录中。因此,目录的命名如下:db/versions/1db/versions/2 等。每个版本必须包含以下文件之一

  • schema.sql - 总是首先运行,包含 CREATE TABLE IF NOT EXISTSALTER 语句等。
  • data.sql - 包含 REPLACE INTOINSERTUPDATEDELETE 语句等。
  • testing.sql - 与 data.sql 相同,但包含测试数据,这些数据不需要在测试环境之外存在。
  • runme.php - 一个用于运行与版本关联的自定义 PHP 钩子。

按照上述顺序运行每个版本的文件。

配置

最快的方法是在 <project_root>/db/db.ini 文件中设置数据库配置。

请参阅 examples/db.ini 以获取此文件的示例。

环境

[environments] 标签下定义环境列表和测试环境列表。

列出所有可用环境,如下所示:environments[] = "local-dev"

列出测试环境,如下所示:testing_environments[] = "local-dev"。此列表是环境列表的子集,包含应接收测试数据的环境。

连接

您必须为每个环境定义两个数据库连接配置。这两个配置称为 buildtimeruntime,分别用于处理模式更改和数据更改。

每个连接需要一个 hostuserpassworddatabase。您可以可选地添加一个 port

命令行界面

命令行工具位于 vendor/bin/smyver.php

请记住它! 它代表 Smrtr MYsql VER sion control。

状态

运行 vendor/bin/smyver.php status <environment> 以获取该环境的当前数据库状态。

升级

运行 vendor/bin/smyver.php up <environment> 在指定环境中安装或更新数据库。此命令检查 db/versions 目录中的可用版本,并按顺序从当前版本应用新版本。

如果这是在给定环境中的第一次运行,则创建一个名为 db_config 的表,并用于存储当前数据库版本。

您可以选择提供第二个参数,指定要使用的 mysql 客户端二进制文件。如果 mysql 不在您的 $PATH 中,则需要此参数。

--no-schema

使用此标志可跳过模式文件。如果您使用 ORM 构建数据库模式,则这可能很有用。

--install-provisional-version

使用此标志安装临时版本。这允许你在为数据库版本指定版本号并正式采用之前,先测试可能正在开发中的数据库版本。默认情况下,此命令会在 <project_root>/db/versions/new 中查找你的临时版本。

拆除

运行 vendor/bin/smyver.php teardown <环境> 以在指定环境中拆除表。

此命令在开发与测试环境中非常有用。

使用 confirm 选项跳过确认提示,例如:

vendor/bin/smyver.php <environment> --confirm

全局 CLI 选项

这些选项可以与所有控制台命令一起使用。

--config-adapter

指定要使用的配置适配器,而不是默认使用的 Ini 适配器。

如果你使用此包中提供的标准适配器之一,你只需输入类名即可,例如 PhpFile。

如果你使用你自己的自定义适配器类,则必须提供完全限定的类名,并且你的类必须实现 Smrtr\MysqlVersionControl\DbConfigAdapter\ConfigAdapterInterface

--config-adapter-param

使用此选项可以指定配置适配器类的构造函数参数。

要指定多个参数,只需多次使用此选项,例如: --config-adapter-param="One" --config-adapter-param="Two" 将导致配置适配器以如下方式实例化: new $adapter("One", "Two")

--provisional-version

使用此选项提供临时版本的自定义路径。你的自定义路径相对于版本路径。

--versions-path

使用此选项,或使用缩写 -p,提供版本的自定义路径。这允许你覆盖默认的版本路径,默认路径为 <project_root>/db/versions。如果提供的路径不是绝对路径,则假定它是相对于项目根的。