phlib / schemadiff
模式差异:显示 MySQL 数据库之间的差异
2.0.1
2023-10-16 16:03 UTC
Requires
- php: ^7.4 || ^8.0
- ext-pdo: *
- ext-pdo_mysql: *
- symfony/console: ^3.2|^4|^5 || ^6
Requires (Dev)
README
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);
示例输出
由于数据库名称可能在不同主机上相同,因此包括了 DSN 位置。
许可证
此软件包是免费软件:您可以在自由软件基金会的 GNU 较小通用公共许可证的条款下重新分发和/或修改它,许可证版本 3,或(根据您的选择)许可证的任何后续版本。
本程序分发时希望它会有用,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示性保证。有关详细信息,请参阅 GNU 较小通用公共许可证。
您应该已随此程序收到一份 GNU 较小通用公共许可证的副本。如果没有,请参阅 https://gnu.ac.cn/licenses/。