Вы можете использовать MySQL, чтобы написать его и выполнить:
Это преобразует каждую таблицу InnoDB в базе данных dbnameв 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}
Это преобразует каждую таблицу InnoDB в 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}
Если вы не хотите, чтобы преобразование таблиц реплицировалось в подчиненные, просто укажите SET SQL_LOG_BIN=0;в первой строке. Таким образом, вы можете проверить преобразование в настройке Master / Slave, преобразовав сначала только Slave, а затем Master.
Это преобразует каждую таблицу InnoDB в базе данных dbnameв 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}
Это преобразует каждую таблицу InnoDB в MyISAM, а не реплицирует на другие серверы.
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}
Переходя от MyIsam2InnoDB в реальном мире, вы, вероятно, захотите SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; где-нибудь обойти no_zero_date, начиная с mysql 5.7 - Источник stackoverflow.com/questions/9192027/…
Энтони Гиббс
Переходя от MyIsam2InnoDB в реальном мире, вы, вероятно, захотите SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; где-нибудь обойти no_zero_date, начиная с mysql 5.7 - Источник stackoverflow.com/questions/9192027/…
Энтони Гиббс
0
Для тех, у кого все еще есть эта проблема, вы можете пойти по этому пути, я нашел этот ответ на веб-сайте. Это мне очень помогает:
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командной строке.
Ответы:
Я не знаю ни одного способа сделать это в самом MySQL, но простой скрипт оболочки сделает эту работу:
источник
Вы можете использовать MySQL, чтобы написать его и выполнить:
Это преобразует каждую таблицу InnoDB в базе данных
dbname
в MyISAMЭто преобразует каждую таблицу InnoDB в MyISAM
Если вы не хотите, чтобы преобразование таблиц реплицировалось в подчиненные, просто укажите
SET SQL_LOG_BIN=0;
в первой строке. Таким образом, вы можете проверить преобразование в настройке Master / Slave, преобразовав сначала только Slave, а затем Master.Это преобразует каждую таблицу InnoDB в базе данных
dbname
в MyISAM, а не реплицирует на другие серверы.Это преобразует каждую таблицу InnoDB в MyISAM, а не реплицирует на другие серверы.
Попробуйте!
источник
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
где-нибудь обойти no_zero_date, начиная с mysql 5.7 - Источник stackoverflow.com/questions/9192027/…SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
где-нибудь обойти no_zero_date, начиная с mysql 5.7 - Источник stackoverflow.com/questions/9192027/…Для тех, у кого все еще есть эта проблема, вы можете пойти по этому пути, я нашел этот ответ на веб-сайте. Это мне очень помогает:
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
командной строке.Ура!
источник
Я предпочитаю однострочники для этого типа вещей. Это однострочная версия наиболее приемлемого ответа.
Это работает, если у вас установлены имя пользователя и пароль MySQL
~/.my.cnf
.источник