概述
说明:
当我们创建表 “test”表时
CREATE TABLE test (id INT(11)default NULL auto_increment,s char(60)default NULL,PRIMARY KEY(id)ENGINE=InnoDB;
一般情况这样没任何问题。但是,如果MySQL服务器配置中未启用InnoDB存储引擎。则在创建表 test 时,MySQL还是会自动选择默认的存储引擎MyISAM来创建test表。因为通过SHOW CREATE TABLE 表名 来查看表使用的mysql存储引擎是不准确的。
实例:
mysql服务器未启用InnoDB存储引擎;
库名:mytest;
表名:test(mytest.test);
帐号:root;
密码:mypassword;
列 “Engine” 下显示的值表示表正在使用的 MySQL 存储引擎。
1.确认 MySQL 服务器 是否启用InnoDB存储引擎
mysql>SHOW ENGINES;+------------+---------+----------------------------------------------------------+|Engine|Support|Comment|+------------+---------+----------------------------------------------------------+|InnoDB|NO |Supportstransactions,row-level locking,andforeign keys||MRG_MYISAM |YES |Collectionof identical MyISAMtables ||BLACKHOLE |YES |/dev/nullstorage engine (anything you write to it disa
|CSV |YES |CSV storage engine ||MEMORY |YES |Hashbased,stored inmemory,useful fortemporary tables||FEDERATED |NO |FederatedMySQLstorage engine ||ARCHIVE |YES |Archivestorage engine ||MyISAM|DEFAULT |Defaultengine asof MySQL3.23withgreat performance|+------------+---------+----------------------------------------------------------+8rows inset(0.00sec)
返回结果是:InnoDB对应的Support为NO,表示未启用InnoDB存储引擎。
2.创建表 “test”
mysql>create database mytest;QueryOK,1row affected (0.02sec)mysql>usemytest;Databasechanged
mysql>CREATE TABLE test (->id INT(11)defaultNULL auto_increment,->s char(60)defaultNULL,->PRIMARY KEY (id)->)ENGINE=InnoDB;QueryOK,0rows affected,2warnings (0.06sec)mysql>
3.使用“SHOW CREATE TABLE 表名” 来查看,这种方式是不准确的
mysql>SHOW CREATE TABLE test;+-------+----------------------------------------------------------------------------+|Table|CreateTable|+-------+----------------------------------------------------------------------------+|test |CREATE TABLE `test`(`id`int(11)NOT NULL AUTO_INCREMENT,`s`char(60)DEFAULT NULL,PRIMARY KEY (`id`)ENGINE=InnoDBDEFAULT CHARSET=latin1 |+-------+----------------------------------------------------------------------------+1row inset(0.00sec)
可以看到test表还是InnoDB引擎!!
4.使用SHOW TABLE STATUS from 数据库库名 where Name=’表名’;这是正确的方式
# mysql -uroot -p'mypassword'Welcometo the MySQLmonitor.Commandsendwith;org.YourMySQLconnection id is221Serverversion:5.1.41-3ubuntu12.7(Ubuntu)Type'help;'or'h'forhelp.Type'c'to clear the current input statement.mysql>SHOW TABLE STATUS frommytest whereName='test';+------------+--------+---------+------------+------+----------------+-------------+|Name|Engine|Version|Row_format|Rows|Avg_row_length|Data_length|+------------+--------+---------+------------+------+----------------+-------------+|test |MyISAM|10|Fixed|0|0|0|+------------+--------+---------+------------+------+----------------+-------------+1row inset(0.02sec)mysql>
5.mysqlshow -u 数据库登录帐号 -p ‘数据库登录帐号密码’ – -status 数据库库名 表名,这也是正确的方式
# mysqlshow -uroot -p'mypassword' --status mytest testDatabase:mytest Wildcard:test
+------------+--------+---------+------------+------+----------------+-------------+|Name|Engine|Version|Row_format|Rows|Avg_row_length|Data_length|+------------+--------+---------+------------+------+----------------+-------------+|test |MyISAM|10|Fixed|0|0|0|+------------+--------+---------+------------+------+----------------+-------------+
最后:
可以看出,在未启用InnoDB存储引擎的情况下,我们发现4,5步返回的结果是正确的,列Engine为MyISAM而不是InnoDB存储引擎。而第3步使用 “SHOW CREATE TABLE 表名” 来查看表使用的mysql存储引擎是不准确的。
http://coolnull.com/2759.html
最后
以上就是爱听歌红酒为你收集整理的MySQL 查看某表的存储引擎_查看mysql当前表使用的存储引擎(转)的全部内容,希望文章能够帮你解决MySQL 查看某表的存储引擎_查看mysql当前表使用的存储引擎(转)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复