Подскажите SQL запрос чтобы сменить тип всех таблиц во всех базах

12
L
На сайте с 23.09.2012
Offline
13
5471

Приветствую

Возникла такая задача - перевести все таблицы во всех базах данных на сервере Mysql в InnoDB.

Но выписывать каждую таблицу и каждую базу...годы уйдут.

Не подскажите как в 1 запрос изменить тип базы на InnoDB (с MyISAM) во всех таблицах сразу по всей БД MySQL?

А если есть какие-то ошибки при конвертации - просто игнорировать и оставить MyISAM.

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Написать скрипт, который автоматизирует это.

Не стоит плодить сущности без необходимости
M
На сайте с 01.12.2009
Offline
235
#2
Andreyka:
Написать скрипт, который автоматизирует это.

Чё как всегда ? КГБ строим ? 😂

TC

делаешь SHOW TABLES и для каждой таблицы ALTER TABLE

ALTER TABLE t1 ENGINE=InnoDB

Как-бы без скрипта не обойтись можно написать на php за денюшку.

Администратор Linux,Freebsd. построения крупных проектов.
L
На сайте с 23.09.2012
Offline
13
#3
madoff:
Чё как всегда ? КГБ строим ? 😂


TC
делаешь SHOW TABLES и для каждой таблицы ALTER TABLE

ALTER TABLE t1 ENGINE=InnoDB

Как-бы без скрипта не обойтись можно написать на php за денюшку.

MySQL не дибилы делали.

Наверняка есть что-то типо ALTER * from BASENAME ENGINE=InnoDB - но как точно написать я незнаю.

S
На сайте с 21.05.2012
Offline
11
#4

Какие скрипты, делается однострочником в шелле, хотя если для всех баз то посложнее

for i in `mysql -e 'show databases' | awk '{print $1}' | egrep -v '(mysql|information_schema|Database)'`; do mysql -e 'show tables' $i | egrep -v ^Tables_in | xargs -n1 -I@@ echo "mysql -e 'ALTER TABLE @@ ENGINE=InnoDB' $i" ; done

выдаст что-то типа

mysql -e 'ALTER TABLE users_groups ENGINE=InnoDB' zabbix

mysql -e 'ALTER TABLE usrgrp ENGINE=InnoDB' zabbix

mysql -e 'ALTER TABLE valuemaps ENGINE=InnoDB' zabbix

mysql -e 'ALTER TABLE articles ENGINE=InnoDB' zfconf

mysql -e 'ALTER TABLE pages ENGINE=InnoDB' zfconf

mysql -e 'ALTER TABLE users ENGINE=InnoDB' zfconf

если все ок, то нужно будет просто убрать echo и "" кавычки чтоб команда выполнилась

Администрирование и мониторинг серверов (http://servcare.com)
M
На сайте с 01.12.2009
Offline
235
#5

php пишется за 2 минуты, обычно и не принуждённо ;)

А вот давать совет не зная точности работы команды это уже плохо.

S
На сайте с 21.05.2012
Offline
11
#6
madoff:
php пишется за 2 минуты, обычно и не принуждённо ;)

написал на шелл за минуту) кто быстрее?)


А вот давать совет не зная точности работы команды это уже плохо.

э?)

Andreyka
На сайте с 19.02.2005
Offline
822
#7

Вот это и есть скрипт

А одна там строка или десять - без разницы

M
На сайте с 16.09.2009
Offline
278
#8
Lopas:
MySQL не дибилы делали.

К сожалению, нет защиты от использования MySQL, пардон муа, дебилами.

PS: Не нравятся shell, php, etc - в mysql есть LOOP. Сюрприз!

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
DV
На сайте с 01.05.2010
Offline
644
#9

#!/bin/sh


DB_NAME="db_name";
mysql --user=root -p --execute="USE information_schema; SELECT CONCAT(\"ALTER TABLE \`\", TABLE_SCHEMA,\"\`.\`\", TABLE_NAME, \"\` TYPE = InnoDB;\") as MySQLCMD from TABLES where TABLE_SCHEMA = \""${DB_NAME}"\";" > ${DB_NAME}-temp.sql;
sed '/MySQLCMD/d' ${DB_NAME}-temp.sql > ${DB_NAME}-innodb.sql;
mysql --user=root -p < ${DB_NAME}-innodb.sql;
rm ${DB_NAME}-temp.sql;
rm ${DB_NAME}-innodb.sql;
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
L
На сайте с 23.09.2012
Offline
13
#10
DenisVS:
#!/bin/sh

DB_NAME="db_name";
mysql --user=root -p --execute="USE information_schema; SELECT CONCAT(\"ALTER TABLE \`\", TABLE_SCHEMA,\"\`.\`\", TABLE_NAME, \"\` TYPE = InnoDB;\") as MySQLCMD from TABLES where TABLE_SCHEMA = \""${DB_NAME}"\";" > ${DB_NAME}-temp.sql;
sed '/MySQLCMD/d' ${DB_NAME}-temp.sql > ${DB_NAME}-innodb.sql;
mysql --user=root -p < ${DB_NAME}-innodb.sql;
rm ${DB_NAME}-temp.sql;
rm ${DB_NAME}-innodb.sql;

Ошибки не игнорирует и скрипт останавливается.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий