Anda dapat menggunakan MySQL untuk membuat skrip dan menjalankannya:
Ini akan mengonversi setiap tabel InnoDB dalam database dbnameke 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}
Ini akan mengonversi setiap tabel InnoDB ke MyISAM
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}
Jika Anda tidak ingin konversi tabel direplikasi ke Slave, cukup masukkan SET SQL_LOG_BIN=0;sebagai baris pertama. Dengan begitu, Anda dapat menguji konversi dalam pengaturan Master / Slave dengan hanya mengonversi Slave terlebih dahulu dan kemudian Master nanti.
Ini akan mengonversi setiap tabel InnoDB dalam database dbnameke MyISAM dan tidak mereplikasi ke server lain
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}
Ini akan mengonversi setiap tabel InnoDB ke MyISAM dan tidak meniru ke server lain
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}
Pergi dari MyIsam2InnoDB di dunia nyata Anda mungkin ingin SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; tempat untuk memotong no_zero_date sejak mysql 5.7 - Source stackoverflow.com/questions/9192027/…
Antony Gibbs
Pergi dari MyIsam2InnoDB di dunia nyata Anda mungkin ingin SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; tempat untuk memotong no_zero_date sejak mysql 5.7 - Source stackoverflow.com/questions/9192027/…
Antony Gibbs
0
Bagi mereka yang masih memiliki masalah ini, Anda dapat mengikuti cara ini untuk melakukannya, saya menemukan jawaban ini di situs web. Ini sangat membantu saya:
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
Perbarui usernamedan db_namenilai dengan nilai Anda sendiri.
Setelah menjalankan skrip, itu akan menyimpan file dengan nama: alter.sql
Buka file dan jalankan konten pada phpmyadminatau mysqlbaris perintah Anda.
Jawaban:
Saya tidak mengetahui cara untuk melakukan ini di mysql sendiri, tetapi skrip shell sederhana akan melakukan pekerjaan:
sumber
Anda dapat menggunakan MySQL untuk membuat skrip dan menjalankannya:
Ini akan mengonversi setiap tabel InnoDB dalam database
dbname
ke MyISAMIni akan mengonversi setiap tabel InnoDB ke MyISAM
Jika Anda tidak ingin konversi tabel direplikasi ke Slave, cukup masukkan
SET SQL_LOG_BIN=0;
sebagai baris pertama. Dengan begitu, Anda dapat menguji konversi dalam pengaturan Master / Slave dengan hanya mengonversi Slave terlebih dahulu dan kemudian Master nanti.Ini akan mengonversi setiap tabel InnoDB dalam database
dbname
ke MyISAM dan tidak mereplikasi ke server lainIni akan mengonversi setiap tabel InnoDB ke MyISAM dan tidak meniru ke server lain
Cobalah !!!
sumber
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
tempat untuk memotong no_zero_date sejak mysql 5.7 - Source stackoverflow.com/questions/9192027/…SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
tempat untuk memotong no_zero_date sejak mysql 5.7 - Source stackoverflow.com/questions/9192027/…Bagi mereka yang masih memiliki masalah ini, Anda dapat mengikuti cara ini untuk melakukannya, saya menemukan jawaban ini di situs web. Ini sangat membantu saya:
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
Perbarui
username
dandb_name
nilai dengan nilai Anda sendiri.Setelah menjalankan skrip, itu akan menyimpan file dengan nama:
alter.sql
Buka file dan jalankan konten padaphpmyadmin
ataumysql
baris perintah Anda.Bersulang!
sumber
Saya lebih suka satu kalimat untuk jenis barang ini. Ini adalah versi satu-baris dari jawaban yang paling diterima.
Ini berfungsi jika Anda memasukkan nama pengguna dan kata sandi MySQL Anda
~/.my.cnf
.sumber