Mysql 不同例項的表結構字段對比實踐

2021-10-07 10:55:41 字數 2320 閱讀 7627

兩台例項如果需要進行表結構對比時,一旦涉及的表過多或者欄位過多,對比起來非常麻煩。

這時候沿用mysql sql問題mysql illegal mix of collations for operation union 排查解決思路

來完成這部分的對比。

這裡拿表字段舉例

先從主庫information_schema庫中將表columns匯入到需要對比的庫中。

這裡需要注意匯出成sql檔案的時候,記得將temporary這個關鍵字去掉,這個代表臨時表的意思。臨時表會導致看不到任何東西。

這個時候對比庫已經擁有的主庫的所有字段資訊,然後根據這些字段資訊和對比庫的字段做交叉對比。

參考語句:

select

a.table_name,

a.column_name,

b.column_name

from

(select

*from

columns b

where

b.table_schema =

'主庫名稱'

and b.table_name in

(select

*from

(select

a.table_name

from

information_schema.

`columns

` a where

a.table_schema =

'對比庫的名稱'

) a )

) aleft

join

(select

a.table_name,

a.column_name

from

information_schema.

`columns

` a where

a.table_schema =

'對比庫的名稱'

) b on a.table_name = b.table_name

and a.column_name = b.column_name

where

b.column_name is

null

;

查詢出來的結果就是對比庫和主庫之間差異字段。

同理: 表名稱、索引… 一系列的對比都可以參考該思路。

另外補充一些根據mysql查詢表的sql語句

-- 根據表的建立時間進行排序

select

*from information_schema.

tables

where table_schema =

'marketing_db'

order

by create_time desc

;-- 檢視表的修改時間字段是否有預設值為當前時間戳

select

*from information_schema.

columns

where table_schema =

'marketing_db'

and column_name =

'updated'

and extra ='';

-- 匯出表的結構檔案

select

distinct a.table_name,

b.table_comment,

a.column_name,

a.column_type,

a.column_comment

from

`information_schema`

.columns a

left

join

`information_schema`

.tables b on a.table_name= b.table_name

where a.table_schema=

'marketing_db'

and a.table_name in

('t_activity_info'

,'t_activity_ticket_record');

-- 根據特定的表建立相同的表

create

table temp_jinmao_data.c_user like marketing_db.c_user ;

MYSQL 根據不同欄位的彙總相同欄位的總數

需求 彙總乙個使用者不同支付方式的購買的總杯數 buy num 杯數 pay code 支付方式 pay name 支付名稱 pay status 支付狀態 ms order 訂單表 ms user 使用者表 select u.id,pay name,u.username,sum buy num a...

mysql 修改表的字段

修改乙個表的字段 alter table member change memberid memberid bigint unsigned 修改含有外來鍵的字段 執行 begin 到 end 之間的 可能需要修改sql mode值 show variables like sql mode 儲存查詢出來...

Mysql之列 字段 表

數值 型別 介紹大小 範圍tinyint 十分小的資料 1個位元組 2 7 2 2 7 2 7 1 2 1 2 7 1smallint 較小的資料 2個位元組 2 15 2 2 15 2 1 mediumint 中大小資料 3個位元組 2 23 2 2 23 2 1 int標準的整數 4個位元組 2...