W MySQL nie ma możliwości określenia mechanizmu przechowywania dla określonej bazy danych, tylko dla pojedynczych tabel. Możesz jednak określić mechanizm przechowywania danych, który ma być używany podczas jednej sesji:
SET storage_engine=InnoDB;
Nie musisz więc określać tego dla każdej tabeli.
Jak mogę sprawdzić, czy rzeczywiście wszystkie tabele używają InnoDB?
mysql
innodb
myisam
storage-engines
kamal
źródło
źródło
Odpowiedzi:
Jeśli używasz SHOW CREATE TABLE, musisz przeanalizować silnik z zapytania.
Wybór z bazy danych INFORMATION_SCHEMA jest złą praktyką, ponieważ twórcy zastrzegają sobie prawo do zmiany schematu w dowolnym momencie (choć jest to mało prawdopodobne).
Prawidłowe zapytanie to SHOW TABLE STATUS - możesz uzyskać informacje o wszystkich tabelach w bazie danych:
SHOW TABLE STATUS FROM `database`;
Lub dla konkretnego stołu:
SHOW TABLE STATUS FROM `database` LIKE 'tablename';
Jedną z kolumn, które odzyskasz, jest Silnik.
źródło
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
źródło
show create table <table>
powinien załatwić sprawę.źródło