以前は、これを使用します:
USE dbname;
ALTER TABLE tablename ENGINE=MYISAM;
すべてのテーブル名を1つずつ書き込むのではなく、データベース内のすべてのテーブルを変換する簡単な方法を探しています
私はmysql自体でこれを行う方法を認識していませんが、単純なシェルスクリプトで機能します。
TABLES=$(mysql -pXXXXXXX -uXXXXXXX --skip-column-names -B -D $DB -e 'show tables')
for T in $TABLES
do
mysql -pXXXXX -uXXXXX -D $DB -e "ALTER TABLE $T ENGINE=MYISAM"
done
MySQLを使用して、スクリプトを作成して実行できます。
dbname
内のすべてのInnoDBテーブルをMyISAMに変換しますCONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
テーブルの変換をスレーブに複製したくない場合は、SET SQL_LOG_BIN=0;
を最初の行として。このようにして、最初にスレーブのみを変換し、次にマスターを後で変換することにより、マスター/スレーブ設定で変換をテストできます。
dbname
のすべてのInnoDBテーブルがMyISAMに変換され、他のサーバーには複製されませんCONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
試してみる !!!
この問題が解決しない場合は、この方法で実行できます。この回答はWebサイトで見つかりました。それは私に大いに役立ちます:
Shell> mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql
username
およびdb_name
の値を独自の値で更新します。
スクリプトを実行すると、次の名前でファイルが保存されます:alter.sql
ファイルを開き、phpmyadmin
またはmysql
コマンドラインでコンテンツを実行します。
乾杯!