mysqlでデータベース・テーブルを表示するストレージ・エンジン

7417 ワード

「MySQLテーブルを表示するために使用されるストレージエンジン」のような文章がたくさんありますが、厳密ではありません.「SHOW CREATE TABLEテーブル名」を使う  を参照してください.この方法で検出された結果は、場合によっては正確ではない.
 
たとえば、テーブル「test」の作成1. CREATE   TABLE   test ( 2. id  INT (11)  default   NULL   auto_increment, 3. char (60)  default   NULL , 4. PRIMARY   KEY   (id) 5. ) ENGINE=InnoDB;
 
普通はこれで何の問題もありません.ただし、MySQLサーバが構成中の場合、InnoDBストレージエンジンは有効になっていません.テーブル「test」を作成すると、MySQLはデフォルトのストレージエンジンMyISAM作成を自動的に選択します.
 
Fifiのブログ
例は次のとおりです.
 
Fifiのブログ
MySQL  サーバの基本:
MySQLサーバが有効になっていません  InnoDB   ストレージエンジン;
データベース・ライブラリ名のテスト:  mytest  ;
データベース・テーブル名のテスト:  test ( mytest.test )  ;
データベースログインアカウントのテスト:  root  ;
テストデータアカウントログインパスワード:  mypassword  ;
 
Fifiのブログ
        列「Engine」の下に表示される値は、テーブルが使用しているMySQLストレージエンジンを示します.有効になっていません  InnoDB  ストレージエンジンの場合、正しい方法で返された結果に「Engine」が「MyISAM」であり、「InnoDB」ではないことがわかります.  ストレージエンジン.そこで、「SHOW CREATE TABLEテーブル名」を使います  テーブル使用の表示  MySQL  ストレージエンジンは正確ではありません.
1.     MySQLサーバがInnoDBを有効にしていることを確認  ストレージエンジン
 
Fifiのブログ
        結果は次のとおりです.  "InnoDB"   対応する  「Support」は「NO」に等しい  ,有効になっていないことを示します  InnoDB  ストレージエンジン.01. mysql> SHOW  ENGINES; 02. +------------+---------+----------------------------------------------------------+( ) 03. | Engine     | Support | Comment                                                  |( ) 04. +------------+---------+----------------------------------------------------------+( ) 05. | InnoDB     | NO      | Supports transactions, row-level locking, and foreign keys|( ) 06. | MRG_MYISAM | YES     | Collection of identical MyISAM tables                  |( ) 07. | BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disa( ) 08. | CSV        | YES     | CSV storage engine                                       |( ) 09. | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables|( ) 10. | FEDERATED  | NO      | Federated MySQL storage engine                           |( ) 11. | ARCHIVE    | YES     | Archive storage engine                                   |( ) 12. | MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance|( ) 13. +------------+---------+----------------------------------------------------------+( ) 14. 8 rows in set (0.00 sec) 15.
  16. mysql> 17. 
 
2.     テーブル「test」の作成
 
Fifiのブログ01. mysql> create database mytest; 02. Query OK, 1 row affected (0.02 sec) 03. mysql> use mytest; 04. Database changed 05. mysql> CREATE TABLE test ( 06. -> id INT(11) default NULL auto_increment, 07. -> s char(60) default NULL, 08. -> PRIMARY KEY (id) 09. -> ) ENGINE=InnoDB; 10. Query OK, 0 rows affected, 2 warnings (0.06 sec) 11. mysql> 12. 
 
Fifiのブログ
3.     不正確な使い方:「SHOW CREATE TABLEテーブル名」  表示
 
Fifiのブログ01. mysql> SHOW CREATE TABLE test; 02. +-------+----------------------------------------------------------------------------+ 03. | Table | Create Table| 04. +-------+----------------------------------------------------------------------------+ 05. | test  | CREATE TABLE `test` ( 06. `id` int(11) NOT NULL AUTO_INCREMENT, 07. `s` char(60) DEFAULT NULL, 08. PRIMARY KEY (`id`) 09. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 10. +-------+----------------------------------------------------------------------------+ 11. 1 row in set (0.00 sec) 12. mysql>
 
Fifiのブログ
4.     正しい方法1:  SHOW TABLE STATUS from  データベース・ライブラリ名  Where Name='テーブル名';01. ansen@neusoft:/myhome$ mysql -uroot -p'mypassword' 02. Welcome to the MySQL monitor.  Commands end with ; or \g. 03. Your MySQL connection id is 221 04. Server version: 5.1.41-3ubuntu12.7 (Ubuntu) 05.
  06. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 07.
  08. mysql> SHOW TABLE STATUS from mytest where Name='test'; 09. +------------+--------+---------+------------+------+----------------+-------------+( ) 10. | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |( ) 11. +------------+--------+---------+------------+------+----------------+-------------+( ) 12. | test | MyISAM |      10 | Fixed      |    0 |              0 |           0 |( ) 13. +------------+--------+---------+------------+------+----------------+-------------+( ) 14. 1 row in set (0.02 sec) 15.
  16. mysql>
 
Fifiのブログ
5.     正しい方法2:  mysqlshow  -uデータベースログインアカウント-p'データベースログインアカウントパスワード'  --status   データベース・ライブラリ名  テーブル名
 
Fifiのブログ
view source
print ? 1. ansen@neusoft:/myhome$ mysqlshow  -uroot -p'mypassword'   --status mytest test 2. Database:mytest  Wildcard: test 3. +------------+--------+---------+------------+------+----------------+-------------+( ) 4. | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |( ) 5. +------------+--------+---------+------------+------+----------------+-------------+( ) 6. | test | MyISAM |      10 | Fixed      |    0 |              0 |           0 |( ) 7. +------------+--------+---------+------------+------+----------------+-------------+( ) 8. ansen@neusoft:/myhome$