MySQL批量修改數據庫的字符集

 

#走過,試過的路數據庫

UPDATE information_schema.`SCHEMATA` SET  DEFAULT_COLLATION_NAME='utf8_general_ci'  WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';

#————嘗試使用update語句來修改,這是走不通的,報如下錯誤 沒有權限。函數

#錯誤代碼: 1044
#Access denied for user 'root'@'%' to database 'information_schema'測試

#通過度娘查找資料,須要使用alter語句才能夠修改DB的字符集spa

ALTER DATABASE mydb CHARACTER SET utf8;

 

#第一步,找出MySQL實例中字符集不是utf8的數據庫code

SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';

#第二步,修改字符集 orm

#若是MySQL實例上有多個數據庫須要將字符集改成utf8,咱們能夠採起的策略,以下:blog

#2.1 使用 CONCAT函數,相信你們看到如下的語句,應該能知道下一步怎麼作了。ci

SELECT *,CONCAT(' ALTER DATABASE ',schema_name,' CHARACTER SET utf8;')strSql FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';

#2.2 複製出上一個select的結果,粘貼,最後執行io

ALTER DATABASE 3_11_測試數據庫1 CHARACTER SET utf8;
ALTER DATABASE 3_3_testddb CHARACTER SET utf8;
ALTER DATABASE 410_3_test CHARACTER SET utf8;
…………

#第三步,檢查驗證是否修改爲功form

SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';

#<r>查詢:SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci' LIMIT 0, 1000
#返回了 0 行

#結果代表,已經沒有字符集不是utf8的庫了

大功告成!

相關文章
相關標籤/搜索