9raxdev/mysql-struct-sync

该软件包最新版本(1.0.1)没有可用的许可证信息。

可用于帮助开发人员比较两个数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图),并生成更新语句。可用于同步数据库结构,比较数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图)并生成查询。

1.0.1 2019-08-30 11:55 UTC

This package is auto-updated.

Last update: 2024-09-14 16:34:45 UTC


README

可用于帮助开发人员比较两个数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图),并生成更新语句。可用于同步数据库结构,比较数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图)并生成查询。

待办事项 功能

  • 处理创建表
  • 处理修改表
  • 处理删除表查询
  • 处理约束(PK、FK、索引等)
  • 处理事件
  • 处理函数
  • 处理存储过程
  • 处理触发器
  • 处理视图

安装方式 安装方法

使用composer安装此库

composer require 9raxdev/mysql-struct-sync

注意 注意

1.无法识别rename字段,更改数据库字段名称在代码中的体现为:先删除命名前的字段,再增加命名后的字段。rename字段无法识别。在代码中更改数据库字段名称的方式如下:首先删除命名前的字段,然后增加命名后的字段。

2.advanceDiff()必须基于baseDiff()前提下,因为存储过程、触发器、函数等特性都依赖于数据表。advanceDiff()必须在baseDiff()的基础上执行,因为存储过程、触发器、函数等特性都依赖于数据表。

演示

<?php

include __DIR__.'/MysqlStructSync.php'; 

 
$local_database_config=['host'=>'127.0.0.1','username'=>'root','passwd'=>'root','dbname'=>'test','port'=>3306];

$develop_database_config=['host'=>'127.0.0.1','username'=>'root','passwd'=>'root','dbname'=>'sakila','port'=>3306];

//把local数据库结构更新为develop数据库结构
$compare=new \linge\MysqlStructSync($local_database_config,$develop_database_config);

$compare->removeAutoIncrement();

$compare->baseDiff(); //TABLE COLUMNS(ADD,DROP,MODIFY) CONSTRAINTS(PK,FK,index, ... etc)

$compare->advanceDiff(); //VIEW TRIGGER EVENT FUNCTION PROCEDURE (ADD,DROP)

$diff_sql=$compare->getDiffSql();
//print_r($diff_sql);

/*******************************************/
//用法一:自动执行全部差异语句,更新结构
//$execute_sql_stat=$compare->execute();
//print_r($execute_sql_stat);


//用法二:手动选择要执行的差异语句,记住:选择储存过程,函数等请确保数据库表已经同步
$compare->manuallySelectUpdates();

manuallySelectUpdates