以前,在创建的每个数据库上,我使用:
mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';
然后使用数据库而不用考虑 MyISAM 或 InnoDB
如何知道数据库使用的存储引擎?
答案1
您可以像这样检查每个表:
USE <database>;
SHOW TABLE STATUS\G
您将获得如下输出:
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:
答案2
此查询列出了 MySQL 中的所有 InnoDB 表及其数据库:
SELECT table_name, table_schema
FROM information_schema.tables
WHERE engine = 'InnoDB';
您还可以列出所有表及其存储引擎:
SELECT table_name, table_schema, engine
FROM information_schema.tables;
答案3
使用“show engine”命令查看活动的默认引擎
在 my.cnf 文件的 [mysqld] 部分添加 default-storage-engine=InnoDB,以激活默认引擎。
使用“show create table table_name”命令查看表中的默认引擎。
答案4
获取特定表的引擎名称
use <database_name>
show table status like '<table_name>';
更换引擎
alter table <table_name> engine <engine_name>;