Veritabanında kullanılan depolama motorunu nasıl bilirim?


13

Önceden, oluşturulan her veritabanında şunu kullanıyorum:

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';

ve daha sonra veritabanını MyISAM veya InnoDB hakkında düşünmeden kullanın

Veritabanında kullanılan depolama motorunu nasıl bilirim?

Yanıtlar:


14

Tablo başına şu şekilde kontrol edebilirsiniz:

USE <database>;
SHOW TABLE STATUS\G

bu satırlar boyunca bir çıktı alırsınız:

root@localhost/database> show table status\G
*************************** 1. row ***************************
           Name: tablename
         Engine: MyISAM
        Version: 10
     Row_format: Fixed
           Rows: 101
 Avg_row_length: 70
    Data_length: 7070
Max_data_length: 19703248369745919
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1004
    Create_time: 2009-12-07 20:15:53
    Update_time: 2010-11-10 21:55:01
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

herhangi bir şekilde bir DB tüm tabloları yapmak için bilmek (DB SHOW TABLEher tablo için bir komut dosyası yazmanın yanı sıra )?
voretaq7

2
@ voretaq7 "TABLO DURUMUNU GÖSTER" varsayılan olarak tüm tabloları gösterir.
Coops

cool - Ben bir postgres adamım bu yüzden tüm bu MySQL ve çoklu depolama motorları şeyler benim için garip :-)
voretaq7

5

Etkin varsayılan motoru görüntülemek için 'motoru göster' komutunu kullanın

Varsayılan motorun etkin olması için my.cnf dosyasının [mysqld] bölümüne default-storage-engine = InnoDB ekleyin.

Tablodaki varsayılan motoru görüntülemek için 'tablo oluştur tablo_adı göster' komutunu kullanın.


SHOW ENGINEbana ERROR 1064 (42000) veriyor.
mstrap

1
show engines;
w00t

4

Bu sorgu tüm InnoDB tablolarını ve MySQL içindeki veritabanlarını listeler:

SELECT table_name, table_schema 
FROM information_schema.tables 
WHERE engine = 'InnoDB';

Ayrıca tüm tabloları ve bunların depolama motorlarını listeleyebilirsiniz:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

İkinci sorguyu denedim - hatayı alıyorum: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (MySQL 5.6.37'de)
nnyby

1

Belirli bir tablonun motor adını almak için

use <database_name>
show table status like '<table_name>';

Motoru değiştirmek için

alter table <table_name> engine <engine_name>;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.