標籤:
#走過,試過的路
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的字元集
ALTER DATABASE mydb CHARACTER SET utf8;
#第一步,找出MySQL執行個體中字元集不是utf8的資料庫
SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>‘utf8_general_ci‘;
#第二步,修改字元集
#如果MySQL執行個體上有多個資料庫需要將字元集改為utf8,我們可以採取的策略,如下:
#2.1 使用 CONCAT函數,相信大家看到以下的語句,應該能知道下一步怎麼做了。
SELECT *,CONCAT(‘ ALTER DATABASE ‘,schema_name,‘ CHARACTER SET utf8;‘)strSql FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>‘utf8_general_ci‘;
#2.2 複製出上一個select的結果,粘貼,最後執行
ALTER DATABASE 3_11_測試資料庫1 CHARACTER SET utf8;ALTER DATABASE 3_3_testddb CHARACTER SET utf8;ALTER DATABASE 410_3_test CHARACTER SET utf8;…………
#第三步,檢查驗證是否修改成功
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的庫了
大功告成!
MySQL批量修改資料庫的字元集