mysql5.6批量設置表ROW_FORMAT =DYNAMIC問題
mysql5.6批量設置表ROW_FORMAT =DYNAMIC
安裝某個軟件的時候提示
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
后來發(fā)現(xiàn)是一些參數(shù)設置的問題,不知道m(xù)ysql5.7會不會出現(xiàn)這個問題,
沒有測試大家可以直接升級到mysql5.7看能不能解決
解決方法
1: 系統(tǒng)變量innodb_large_prefix為ON
2: 系統(tǒng)變量innodb_file_format為Barracuda
3: ROW_FORMAT為DYNAMIC或COMPRESSED
將這三個變量設置為以上狀態(tài):
分別可以使用命令
1)show variables like '%innodb_large_prefix%';
2)show variables like '%innodb_file_format%';
3)SELECT table_schema, table_name, row_format FROM information_schema.TABLES
WHERE table_schema IN ( '數(shù)據(jù)庫名') 【可以加篩選命令不是Dynamic的表 AND information_schema.TABLES.row_format <> 'Dynamic'】
查看參數(shù)狀態(tài)如果參數(shù)狀態(tài)不正確可以使用
set global innodb_large_prefix=on; set global innodb_file_format=Barracuda;
兩個命令完成
問題是第三個修改比較麻煩,mysql5.6沒有全局設置表為ROW_FORMAT為DYNAMIC或COMPRESSED的屬性,所以得一個個修改,后來想了個辦法,
可以這樣嘗試操作:
1)可以通過命令
篩選出不等于Dynamic的表并生成更新語句
SELECT CONCAT( "ALTER TABLE `", table_schema, "`.`", table_name, "` ROW_FORMAT =DYNAMIC ;" ) FROM information_schema.TABLES WHERE table_schema IN ( '數(shù)據(jù)庫名' ) AND information_schema.TABLES.row_format <> 'Dynamic'
將生成的語句批量執(zhí)行就可以了!
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢舉例詳解
在MySQL中聚合函數(shù)和分組查詢經常一起使用,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01MySQL 配置免密碼登錄的問題記錄(mysql_config_editor Configurati
這篇文章主要介紹了MySQL 配置免密碼登錄的問題記錄(mysql_config_editor Configuration),本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-08-08