溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL怎么批量修改存儲(chǔ)引擎

發(fā)布時(shí)間:2021-08-17 02:19:39 來(lái)源:億速云 閱讀:121 作者:chen 欄目:數(shù)據(jù)庫(kù)

本篇內(nèi)容主要講解“MySQL怎么批量修改存儲(chǔ)引擎”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“MySQL怎么批量修改存儲(chǔ)引擎”吧!

再看MySQL手冊(cè),看到有關(guān)修改存儲(chǔ)引擎的部分,隧想到能否用shell腳本實(shí)現(xiàn)批量修改,于是便有了下面的腳本,以把MyISAM轉(zhuǎn)換為InnoDB為例。

實(shí)驗(yàn)環(huán)境如下: OS: CentOS 5.8 Final MySQL Version:5.5.19   腳本內(nèi)容如下: 點(diǎn)擊(此處)折疊或打開

  1. #/bin/bash

  2. #FileName:Convert_Storage_Engine.sh

  3. #Desc:Conversion of a MySQL tables to other storage engines

  4. #Create By:fedoracle

  5. #Date:2012/06/27

  6.  

  7. DB=new

  8. USER=test

  9. PASSWD=test

  10. HOST=192.168.25.121

  11. MYSQL_BIN=/usr/local/mysql/bin

  12. S_ENGINE=MyISAM

  13. D_ENGINE=InnoDB

  14.  

  15. #echo "Enter MySQL bin path:"

  16. #read MYSQL_BIN

  17. #echo "Enter Host:"

  18. #read HOST

  19. #echo "Enter Uesr:"

  20. #read USER

  21. #echo "Enter Password:"

  22. #read PASSWD

  23. #echo "Enter DB name :"

  24. #read DB

  25. #echo "Enter the original engine:"

  26. #read S_ENGINE

  27. #echo "Enter the new engine:"

  28. #read D_ENGINE

  29.  

  30. $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='"$DB"' and ENGINE='"$S_ENGINE"';" | grep -v "TABLE_NAME" >tables.txt

  31. for t_name in `cat tables.txt`

  32. do

  33.     echo "Starting convert table $t_name......"

  34.     sleep 1

  35.     $MYSQL_BIN/mysql -h$HOST -u$USER -p$PASSWD $DB -e "alter table $t_name engine='"$D_ENGINE"'"

  36.     if [ $? -eq 0 ]

  37.     then

  38.         echo "Convert table $t_name ended." >>con_table.log

  39.         sleep 1

  40.     else

  41.         echo "Convert failed!" >> con_table.log

  42.     fi

  43. done

測(cè)試過(guò)程如下:

點(diǎn)擊(此處)折疊或打開

  1. [root@dbmaster ~]# mysql -h292.168.25.121 -utest -ptest

  2. (test@192.168.25.121) [(none)] create database new;

  3. Query OK, 1 row affected (0.01 sec)

  4.  

  5. (test@192.168.25.121) [(none)] show databases;

  6. +--------------------+

  7. | Database |

  8. +--------------------+

  9. | information_schema |

  10. | 361 |

  11. | mysql |

  12. | new |

  13. | performance_schema |

  14. | test |

  15. +--------------------+

  16. 6 rows in set (0.00 sec)

  17.  

  18. [root@dbmaster ~]# mysql -h292.168.25.121 -utest -ptest new < 361.sql

  19. (test@192.168.25.121) [(none)] use new;

  20. Database changed

  21. (test@192.168.25.121) [new] show tables;

  22. +---------------------------+

  23. | Tables_in_new |

  24. +---------------------------+

  25. | ad_magazine_content |

  26. | ad_news_letter |

  27. | conf_app |

  28. | ip_province |

  29. | ip_records |

  30. | order_action |

  31. | order_delivery |

  32. | order_goods |

  33. ................................

  34.  

  35. (test@192.168.25.121) [information_schema] select TABLE_NAME,ENGINE from TABLES where TABLE_SCHEMA='new' and ENGINE='MyISAM';

  36. +--------------------------+--------+

  37. | TABLE_NAME | ENGINE |

  38. +--------------------------+--------+

  39. | ad_news_letter | MyISAM |

  40. | conf_app | MyISAM |

  41. | product_lib_attr_group | MyISAM |

  42. | product_lib_brand | MyISAM |

  43. | product_lib_ccard | MyISAM |

  44. | product_lib_color | MyISAM |

  45. | product_lib_fashion | MyISAM |

  46. | product_lib_material | MyISAM |

  47. | product_lib_season | MyISAM |

  48. | product_lib_series | MyISAM |

  49. | product_lib_size | MyISAM |

  50. | product_lib_size_compare | MyISAM |

  51. | product_lib_temperature | MyISAM |

  52. | product_lib_type | MyISAM |

  53. | product_lib_virtual_cat | MyISAM |

  54. | req_conf_app | MyISAM |

  55. | shop_keywords_details | MyISAM |

  56. | system_api_user | MyISAM |

  57. | system_payment | MyISAM |

  58. | system_region | MyISAM |

  59. | system_shop_dist | MyISAM |

  60. | user_show_order | MyISAM |

  61. +--------------------------+--------+

  62. 22 rows in set (0.02 sec)

  63.  

  64. [root@dbmaster scripts]# bash ChangeStorageEngine.sh

  65. Starting convert table ad_news_letter......

  66. Starting convert table conf_app......

  67. Starting convert table product_lib_attr_group......

  68. Starting convert table product_lib_brand......

  69. Starting convert table product_lib_ccard......

  70. Starting convert table product_lib_color......

  71. Starting convert table product_lib_fashion......

  72. Starting convert table product_lib_material......

  73. Starting convert table product_lib_season......

  74. Starting convert table product_lib_series......

  75. Starting convert table product_lib_size......

  76. Starting convert table product_lib_size_compare......

  77. Starting convert table product_lib_temperature......

  78. Starting convert table product_lib_type......

  79. ...............................

  80.  

  81. (test@192.168.25.121) [information_schema] select TABLE_NAME,ENGINE from TABLES where TABLE_SCHEMA='new' and ENGINE='MyISAM';

  82. Empty set (0.01 sec)

  83.  

  84. [root@dbmaster scripts]# cat con_table.log 

  85. Convert table ad_news_letter ended.

  86. Convert table conf_app ended.

  87. Convert table product_lib_attr_group ended.

  88. Convert table product_lib_brand ended.

  89. Convert table product_lib_ccard ended.

  90. Convert table product_lib_color ended.

  91. Convert table product_lib_fashion ended.

  92. Convert table product_lib_material ended.

  93. Convert table product_lib_season ended.

  94. Convert table product_lib_series ended.

  95. Convert table product_lib_size ended.

  96. Convert table product_lib_size_compare ended.

  97. Convert table product_lib_temperature ended.

  98. Convert table product_lib_type ended.

  99. Convert table product_lib_virtual_cat ended.

  100. Convert table req_conf_app ended.

  101. Convert table shop_keywords_details ended.

  102. Convert table system_api_user ended.

  103. Convert table system_payment ended.

  104. Convert table system_region ended.

  105. Convert table system_shop_dist ended.

  106. Convert table user_show_order ended.

################################### 有些表在轉(zhuǎn)換的時(shí)候由于字符集,字段長(zhǎng)度,外鍵約束等原因會(huì)出現(xiàn)一些問(wèn)題,如下 點(diǎn)擊(此處)折疊或打開

  1. ERROR 1217 (23000) at line 1: Cannot delete or update a parent row: a foreign key constraint fails

  2. ERROR 1071 (42000) at line 1: Specified key was too long; max key length is 1000 bytes

到此,相信大家對(duì)“MySQL怎么批量修改存儲(chǔ)引擎”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI