모든 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.