这篇文章主要给大家介绍了关于MySql开发之自动同步表结构的相关资料,这样可以避免在开发中由于修改数据库字段导致的数据库表不一致问题,需要的朋友可以参考下
开发痛点
在开发过程中,由于频繁的修改数据库的字段,导致rd和qa环境的数据库表经常不一致。
而由于这些修改数据库的操作可能由多个rd操作,很难一次性收集全。人手工去和qa环境对字段又特别繁琐,容易遗漏。
解决之道
于是笔者就写了一个能够自动比较两个数据库的表结构,并生成alter语句的程序。同时还可以进行配置从而自动这行这些alter语句。
原理
同步新增的表
如果rd环境新增的表,而qa环境没有,此程序可以直接输出create table语句。原理如下:
用到的sql主要有:
show table from rd_db;
show create table added_table_name;
同步表结构
如果rd表结构有改动,而qa环境没有,此程序可以直接输出alter语句,原理如下:
用到的sql有:
select
COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,COLUMN_COMMENT,EXTRA
from
information_schema.columns
where
TABLE_SCHEMA='rd_db'
and TABLE_NAME = 'rd_table';
比较表结构的代码:
for (Column column : sourceTable.getColumns().values()) {
if (targetTable.getColumns().get(column.getName()) == null) {