smrtr / mysql-version-control
使用 PHP 编写的 mysql 粗糙版本控制系统
Requires
- hearstuk/zf1-component-config: ~1.1
- symfony/console: ~2.7
- symfony/process: ~2.7
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/1、db/versions/2 等。每个版本必须包含以下文件之一
schema.sql- 总是首先运行,包含CREATE TABLE IF NOT EXISTS和ALTER语句等。data.sql- 包含REPLACE INTO、INSERT、UPDATE和DELETE语句等。testing.sql- 与data.sql相同,但包含测试数据,这些数据不需要在测试环境之外存在。runme.php- 一个用于运行与版本关联的自定义 PHP 钩子。
按照上述顺序运行每个版本的文件。
配置
最快的方法是在 <project_root>/db/db.ini 文件中设置数据库配置。
请参阅 examples/db.ini 以获取此文件的示例。
环境
在 [environments] 标签下定义环境列表和测试环境列表。
列出所有可用环境,如下所示:environments[] = "local-dev"。
列出测试环境,如下所示:testing_environments[] = "local-dev"。此列表是环境列表的子集,包含应接收测试数据的环境。
连接
您必须为每个环境定义两个数据库连接配置。这两个配置称为 buildtime 和 runtime,分别用于处理模式更改和数据更改。
每个连接需要一个 host、user、password 和 database。您可以可选地添加一个 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。如果提供的路径不是绝对路径,则假定它是相对于项目根的。