# 轻量级MySQL迁移工具 **Repository Path**: freestylewill/lightweight-mysql-migrate-tools ## Basic Information - **Project Name**: 轻量级MySQL迁移工具 - **Description**: 轻量级MySQL迁移工具 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://consolelog.gitee.io/lightweight-mysql-migrate-tools/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 30 - **Created**: 2020-12-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README = 轻量级MySQL迁移工具 :toc: left :docinfo: shared :stylesheet: ./css/adoc-github.css :toclevels: 4 :nofooter: :version: 1.2.3 :sourcedir: mysql-migrate/src :javadir: {sourcedir}/main/java :testdir: {sourcedir}/test/java :git-url: https://gitee.com/consolelog/lightweight-mysql-migrate-tools :source-link: {git-url}/tree/master/mysql-migrate == 使用方法 === 引入jar包 [source,xml,subs="verbatim,attributes"] ---- cn.codeforfun mysql-migrate {version} ---- === 测试类 [source,java] ---- include::{testdir}/cn/codeforfun/migrate/core/MigrateTest.java[] ---- === 示例代码 https://gitee.com/consolelog/demo-lightweight-mysql-migrate-tools == 实现原理 分别查询源数据库以及目标数据库链接下的 `information_schema` 数据库中的信息,根据信息解析成对应的表、函数等结构,再对比差异,拼接成SQL。 其中 : * {source-link}/src/main/resources/sql/detail/[src/main/resources/sql/detail] 目录下包含数据库表、函数等查询SQL * {source-link}/src/main/java/cn/codeforfun/migrate/core/Migrate.java[Migrate.java] 为核心类 * {source-link}/src/main/java/cn/codeforfun/migrate/core/Migrate.java[Migrate.java] 类中 https://gitee.com/consolelog/lightweight-mysql-migrate-tools/blob/master/mysql-migrate/src/main/java/cn/codeforfun/migrate/core/Migrate.java#L75[`compare()`] 方法为数据库表、函数等结构对比方法 * {source-link}/src/main/java/cn/codeforfun/migrate/core/entity/structure/Database.java[Database.java] 类中 https://gitee.com/consolelog/lightweight-mysql-migrate-tools/blob/master/mysql-migrate/src/main/java/cn/codeforfun/migrate/core/entity/structure/Database.java#L63[`configure()`] 为数据库表、函数等解析方法 == 更新日志 * 1.2.3 ** 修复 联合主键SQL生成错误 大胃王 2020/06/15 10:58 * 1.2.2 ** 修复 外键SQL生成错误 大胃王 2020/06/15 10:14 ** 修复 联合主键SQL生成错误 大胃王 2020/06/15 10:14 * 1.2.1 ** 修复 生成key的SQL和H2兼容 大胃王 2020/6/14 上午3:31 * 1.2.0 ** 修复 对比逻辑重大错误 大胃王 2020/05/26 11:48 上午 * 1.1.9 ** 修复 routine SQL错误 大胃王 2020/05/25 12:00 上午 ** 修复 默认值'CURRENT_TIMESTAMP'错误的在两边加上了引号导致SQL识别错误 大胃王 2020/05/25 11:43 上午 ** 修复 字段默认值和非空判断混淆的BUG 大胃王 2020/05/25 11:42 上午 * 1.1.8 ** 由于maven中央仓库错误,故重新部署,实际功能和1.1.7相同 * 1.1.7 ** 优化Routines对比逻辑,忽略不需要进行对比(比如创建人)的属性 大胃王 2020/05/22 17:13 下午 ** SQL解析出错,创建Key时错误的拆分成多个SQL 大胃王 2020/05/22 17:03 下午 * 1.1.6 ** 删除所有\n字符,替换为空格,防止某些数据库工具软件无法识别换行符,导致SQL执行失败 大胃王 2020/05/22 16:21 下午 * 1.1.5 ** 修复-字段默认值空和空字符串不相同的BUG 大胃王 2020/05/21 23:26 下午 ** 修复-字段默认值为系统关键字时的错误 大胃王 2020/05/21 23:15 下午 ** 忽略视图的字符集区别 大胃王 2020/05/21 23:10 下午 ** 对比字段无法识别"on update CURRENT_TIMESTAMP" 大胃王 2020/05/21 10:30 下午 ** 修复unique_index对比错误 大胃王 2020/05/21 10:24 下午 ** 数据库连接错误时,返回信息不完整 大胃王 2020/5/11, 3:43 下午 * 1.1.4 ** 对比function/procedure的时候生成sql错误,begin前面没有换行 大胃王 2020/05/09, 11:04 上午 ** 将sql生成结果的日志改成trace级别 大胃王 2020/05/09, 11:03 上午 * 1.1.3 ** fix-对比结构时忽略库名 大胃王 2020/04/28, 15:26 下午 * 1.1.2 ** fix-对比结构时忽略库名 大胃王 2019/12/23, 10:47 上午 * 1.1.1 ** 优化jar包依赖 大胃王 2019/12/16, 3:45 下午 * 1.1.0 ** add-忽略DiffResult转换json时无需转换的字段 大胃王 2019/12/12, 4:34 下午 * 1.0.1 ** fix-没有外键时候生成sql为空的bug 大胃王 2019/12/12, 3:55 下午 * 1.0.0 ** 添加procedure 大胃王 2019/12/11, 5:48 下午 * 0.0.4 ** 添加trigger 大胃王 2019/12/11, 3:23 下午 * 0.0.3 ** 添加function同步功能 ** fix-生成的sql为null的错误 王斌 2019/12/10, 9:45 上午 ** fix-sql不换行导致的执行错误 王斌 2019/12/10, 10:06 上午 * 0.0.2 ** 修复字段顺序不匹配导致的结构差异化BUG 大胃王 2019/12/7 上午5:20 ** 修复添加字段导致生成SQL出错的BUG 大胃王 2019/12/7 上午5:30 ** 修复先创建key后创建字段导致字段不存在的Bug 大胃王 2019/12/7 上午6:42 * 0.0.1 ** 初始化仓库 == 源码地址 * https://gitee.com/consolelog/lightweight-mysql-migrate-tools.git[Gitee源码] * https://github.com/qq253498229/lightweight-mysql-migrate-tools.git[Github源码] * https://consolelog.gitee.io/lightweight-mysql-migrate-tools/[GiteePages] * https://qq253498229.github.io/lightweight-mysql-migrate-tools/[GithubPages] == 反馈和贡献 * https://gitee.com/consolelog/lightweight-mysql-migrate-tools/issues[GiteeIssues] * https://github.com/qq253498229/lightweight-mysql-migrate-tools/issues[GithubIssues]