모든 MyISAM 데이터베이스를 쿼리하는 MySQL 명령


13

"MyISAM"엔진이있는 모든 데이터베이스를 쿼리하기 위해 MySQL에서 올바른 명령이 무엇인지 도와 줄 수 있다면 감사하겠습니다. 모든 DB 및 테이블을 MyISAM에서 InnoDB로 변환해야합니다.

답변:


25

아래는 MyISAM엔진 이있는 모든 테이블을 찾는 쿼리입니다

SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

위의 쿼리에는 MyISAM엔진이있는 모든 테이블이 나열됩니다 .

기존 MyISAM 테이블을 InnoDB로 변환하는 방법 아래는 기존 MyISAM테이블을 로 변환하기 위해 ALTER 문을 반환하는 쿼리입니다 InnoDB.

SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA,'`.`',TABLE_NAME, '` ENGINE = InnoDB;') FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

이 명령문을 실행하여 엔진을 변환 할 수 있습니다.


감사합니다 @AbdulManaf. 첫 번째 명령이 서버에서 시간이 걸릴 것으로 기대하지 않았습니다.
— James Wise

예, 시간이 걸리지 않아야합니다.
— 압둘 마나프

InnoDB가 아닌 데이터베이스에서 모든 테이블을 찾기 위해 쿼리하는 방법은 무엇입니까?
— James Wise
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.