#mysql之自動同步表結構 ##開發痛點
在開發過程中,由於頻繁的修改資料庫的字段,導致rd和qa環境的資料庫表經常不一致。
而由於這些修改資料庫的操作可能由多個rd操作,很難一次性收集全。人手工去和qa環境對字段又特別繁瑣,容易遺漏。 ##解決之道
於是筆者就寫了乙個能夠自動比較兩個資料庫的表結構,並生成alter語句的程式。同時還可以進行配置從而自動這行這些alter語句。詳情見github ##原理 ###同步新增的表 如果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()) else else {
// 檢查對應的source 和 target的屬性
string sql =
"alter table " + target.getschema() + "." + targettable.gettablename() + " change " + column
.getname() + " ";
column sourcecolumn = column;
column targetcolumn = targettable.getcolumns().get(sourcecolumn.getname());
// 比較兩者字段,如果返回null,表明一致
string sqlextend = comparesinglecolumn(sourcecolumn, targetcolumn);
if (sqlextend != null) {
changesql.add(sql + sqlextend+";");
after = column.getname();
###同步索引結構 如果rd表的索引有改變,而qa環境沒有,此程式可以直接輸出修改索引語句。原理和上面類似,在此不再贅述。 ###配置
sourcehost=127.0.0.1:3306
sourceuser=root
sourcepass=123123123
sourceschema=mystique_db
sourcecharset=utf8
targethost=127.0.0.1:3306
targetuser=root
targetpass=123123123
targetschema=mystique_test
targetcharset=utf8
autoexecute=yes //此處表明自動同步
###執行 按照上面的模板進行配置 用ide開啟,找到
alchemystar.runner.shellrunner
執行其中的main方法即可 ###生成效果展示
alter table mystique_test.t_test_3 change id id bigint(20) not null auto_increment comment ''
alter table mystique_test.t_test_3 add index (name)
alter table mystique_test.t_test_3 drop index name_id
alter table mystique_test.t_test_3 add id_2 varchar(50) null default '' comment '' after name
mysql 同步 表 同步mysql資料庫中的表
由於django的專案不是新建的,之前的之行過 python manage.py makemigrations python manage.py migrate 的語句。1 所以當我再次再mysql資料庫中建立新的資料庫時,執行上面的兩句時,並沒有什麼卵用!只建立了下面幾個 blog blog bl...
Mysql只同步某些表
只同步bbp庫的t csp表 replicate do table bbp.t csp同樣要同步多個表,則需要指定多個replicate do table,如同步t csp和md goods type表 replicate do table bbp.t csp replicate do table ...
mysql同步資料 MySQL同步資料
mysql dump工具用於匯出現有資料,匯出結果為sql檔案 目前dump工具支援整庫dump以及單錶dump。下面為單錶dump操作過程 1 選擇匯出目標目錄 確保該目錄有足夠的儲存空間。mkdir opt bas backup 2 使用mysqldump命令匯出表資料 mysqldump u ...