公司開發伺服器最近公升級了mysql8,為了適配開發人員本機的mysql5.7,需要把所有資料庫,資料表,表字段自動設定的utf8mb4_0900_ai_ci排序規則改為utf8mb4_general_ci
字段修復
#改變字段資料
select table_schema '資料庫'
,table_name '表'
,column_name '字段'
,character_set_name '原字符集'
,collation_name '原排序規則'
,concat(
'alter table '
, table_schema,
'.',table_name,
' modify column '
,column_name,
' ',column_type,
' character set utf8mb4 collate utf8mb4_general_ci;'
)'修正sql'
from information_schema.
`columns
`where collation_name rlike
'utf8mb4_0900_ai_ci'
;
utf8mb4_0900_ai_ci 是我demo的模糊匹配排序規則,這裡需要替換為你資料庫中需要替換的字段的排序規則,utf8mb4設定的是替換的字符集,utf8mb4_general_ci設定的是替換的排序規則,可以換為需要修正為什麼標準。
把修正的sql複製出來執行,字段標準就修復了。
表修復
#改變表
select table_schema '資料庫'
,table_name '表'
,table_collation '原排序規則'
,concat(
'alter table '
,table_schema,
'.', table_name,
' collate=utf8mb4_general_ci;'
)'修正sql'
from information_schema.
`tables
`where table_collation rlike
'utf8mb4_0900_ai_ci'
;
表修復只需要設定排序規則,字符集會自動設定到正確的標準,替換的話,跟上面一樣。
同樣的,把sql複製出來執行,表就會修復了。
資料庫修復
#修改資料庫
select schema_name '資料庫'
,default_character_set_name '原字符集'
,default_collation_name '原排序規則'
,concat(
'alter database '
,schema_name,
' character set utf8mb4 collate utf8mb4_general_ci;'
)'修正sql'
from information_schema.
`schemata`
where default_character_set_name rlike
'utf8'
;
資料庫修復,需要設定字符集和排序規則,這裡utf8是模糊匹配需要修正的資料庫的字符集,也可以用default_collation_name 排序規則來篩選,這些都很靈活,因為我們工程是分庫的,所以沒有匹配資料庫
如果需要選定到資料庫,就用schema_name 匹配一下就行了
activiti表名全部改小寫
select concat(
'alter table '
,table_name ,
' rename '
,lower(table_name)
,";"
)as statement from information_schema.
tables
where table_schema =
'***'
and table_name like
'act%'
;
lower: 轉換為小寫
upper: 轉換為大寫
table_schema = 『***』 指定庫名,避免不必要的問題
table_name like 『act%』 已act 開頭的表
將查詢出來的sql粘出來執行就可以了
mysql批量修改表
select concat alter table table name,add column isdel varchar 2 default 1 comment 是否刪除1 正常 0 刪除 from information schema.tables where table name like t...
Mysql的批量修改
mysql中 我們經常用到update對乙個物件進行修改。如果某個filed的內容是123xyz890的話呢,通過下面的修改將會把該物件變為123abc890。update table name set filed name 123abc890 where 如果我們要將所有包含有xyz的物件中的xy...
Mysql 排序規則選擇
排序規則 是指對指定字符集下不同字元的比較規則。其特徵有以下幾點 1 兩個不同的字符集不能有相同的排序規則 2 兩個字符集有乙個預設的排序規則 3 有一些常用的命名規則。如 ci結尾表示大小寫不敏感 caseinsensitive cs表示大小寫敏感 case sensitive bin表示二進位制...