phlib/schemadiff

模式差异:显示 MySQL 数据库之间的差异

2.0.1 2023-10-16 16:03 UTC

This package is auto-updated.

Last update: 2024-08-31 00:25:49 UTC


README

Code Checks Codecov Latest Stable Version Total Downloads Licence

MySQL 模式差异,一个用于显示两个模式之间差异的 Symfony 控制台工具。这可以用来显示生产和开发之间的差异。然后开发者需要创建一些迁移脚本。

安装

通过 Composer

单个项目

$ composer require phlib/schemadiff

全局

$ composer global require phlib/schemadiff

命令行使用

如果您全局安装了 schemadiff

并在您的 ~/.bash_profile 中添加此路径

export PATH=~/.composer/vendor/bin:$PATH

然后您可以像这样运行 schemadiff

$ schemadiff --help
$ schemadiff h=127.0.0.1,u=user,p=pass,D=db1 h=127.0.0.1,u=user,p=pass,D=db2

否则,从您的项目中运行它

$ ./vendor/bin/schemadiff --help
$ ./vendor/bin/schemadiff h=127.0.0.1,u=user,p=pass,D=db1 h=127.0.0.1,u=user,p=pass,D=db2

PHP 使用

<?php

$pdo = new \PDO('mysql:...', $username, $password);
$schemaInfo1 = \Phlib\SchemaDiff\SchemaInfoFactory::fromPdo($pdo, 'db1');
$schemaInfo2 = \Phlib\SchemaDiff\SchemaInfoFactory::fromPdo($pdo, 'db2');

$schemaDiff = new \Phlib\SchemaDiff\SchemaDiff(
    new Symfony\Component\Console\Output\StreamOutput(STDOUT)
);
$different = $schemaDiff->diff($schemaInfo1, $schemaInfo2);

exit($different ? 1 : 0);

示例输出

输出显示了模式之间的差异。 示例 1

由于数据库名称可能在不同主机上相同,因此包括了 DSN 位置。 示例 2

测试不同的副本与模板数据库匹配。 示例 3

许可证

此软件包是免费软件:您可以在自由软件基金会的 GNU 较小通用公共许可证的条款下重新分发和/或修改它,许可证版本 3,或(根据您的选择)许可证的任何后续版本。

本程序分发时希望它会有用,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示性保证。有关详细信息,请参阅 GNU 较小通用公共许可证。

您应该已随此程序收到一份 GNU 较小通用公共许可证的副本。如果没有,请参阅 https://gnu.ac.cn/licenses/