2009-10-28 9 views
18
  • Jak określić typ bazy danych mysql: czy to InnoDB, czy MyISAM?
  • Jak mogę przekonwertować MyISAM na InnoDB lub odwrotnie?
+0

Używasz dowolny system zarządzania bazą danych? Jak phpMyAdmin lub SQLyog? –

+0

Nie. Nie korzystam z żadnego systemu zarządzania bazami danych. – Rachel

+0

Próbuję alter tablica the_table engine = InnoDB; ale wygląda na to, że silnik się nie zmienia, czy to dlatego, że nie mam racji, ani co może być tego przyczyną? – Rachel

Odpowiedz

31

Aby ustalić silnik pamięci używanej przez tabeli, można użyć show table status. Pole Engine w wynikach wyświetli silnik bazy danych dla tabeli. Alternatywnie, można wybrać pole engine z information_schema.tables:

select engine 
from information_schema.tables 
where table_schema = 'schema_name' 
    and table_name = 'table_name' 

można zmienić między silnikami magazynowych z wykorzystaniem alter table:

alter table the_table engine = InnoDB; 

Jeżeli, oczywiście, można określić dowolną dostępną silnik przechowywania.

+1

Próbuję alter tablica the_table engine = InnoDB; ale wygląda na to, że silnik się nie zmienia, czy to dlatego, że nie mam racji, ani co może być tego przyczyną? – Rachel

+0

"Jeśli mechanizm magazynowania nie obsługuje operacji ALTER TABLE z próbą, może pojawić się ostrzeżenie.Takie ostrzeżenia mogą być wyświetlane w POKAŻ OSTRZEŻENIA" –

10

Wybierz bazę danych w pytaniu i uruchomić show table status;

3
SHOW TABLE STATUS FROM `database`; 

pokaże wszystko dla wszystkich tabel, zaczynając od tego, czy są one MyISAM lub InnoDB. Jeśli pragną wymienić tylko dane dotyczące 1 tabeli, poniżej składnia może być używany *:

SHOW TABLE STATUS FROM `database` LIKE 'table'; 

zmienić silnik tabeli:

ALTER TABLE `table` ENGINE=InnoDB; 

* uwaga używania Akcent słaby (`lewy apostrof) dla nazwę bazy danych i nazwę tabeli oraz POJEDYNCZĄ CYTATĘ (') dla ciągu porównania (część nazwy tabeli) po LIKE.

`! = '

Powiązane problemy