9raxdev / mysql-struct-sync
该软件包最新版本(1.0.1)没有可用的许可证信息。
可用于帮助开发人员比较两个数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图),并生成更新语句。可用于同步数据库结构,比较数据库之间的差异(表、列、约束、事件、函数、存储过程、触发器、视图)并生成查询。
1.0.1
2019-08-30 11:55 UTC
Requires
- php: >=5.4.0
- ext-mysqli: *
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();