背景
开发者在开发各种需求时候,会发生数据库的结构以及数据变更,每次开发完毕,进行上线时候会同步数据库结构&数据,因此需要找出需要同步的数据库DDL和DML语句,变动少了还好弄。一旦数据变化涉及表多,碎片化则存在如下问题点:容易漏掉,上线出现数据库级别bug和异常。
需要花费很多时间,找出变更DDL和DML。
涉及众多和碎片化的sql变动语句,难以复查。
解决
如果可以有一个可以比较本地数据库开发环境与等待同步开发环境数据库的工具。该工具自动比较两个库对应DML和DDL差别并同时生成sql语句,开发人员将生成语句给DBA执行即可!也可以方便自己检查!sync-data-struct是一个用来比较两个数据库之间的数据结构差异,并生成更新DDL的工具包.方便对比出两个数据库之间差异来进行数据结构同步.
安装composer require zyimm/sync-data-struct
支持的数据Mysql
使用案列//set error
error_reporting(E_ALL);
ini_set('display_errors', true);
//autoload
include '../vendor/autoload.php';
//db
$config = [
// 本地数据库
'local' => [
'host' => 'mysql',
'username' => 'root',
'passwd' => '123456',
'dbname' => 'local'
],
//待同步数据库
'dev' => [
'host' => 'mysql',
'username' => 'root',
'passwd' => '123456',
'dbname' => 'dev'
]
];
$handle = new \Zyimm\dbStructSync\Sync($config);
//输出变动sql语句
echo $handle->toHtml();
项目地址