mysql> drop tablespace ts1;
ERROR 1529 (HY000): Failed to drop TABLESPACE ts1
mysql> drop table temp123;
Query OK, 0 rows affected (0.00 sec)
mysql> drop tablespace ts1;
Query OK, 0 rows affected (0.01 sec)
通过create table语句创建InnoDB表,因为默认存储引擎就是InnoDB,所以不需要在创建表的语句最后指定engine=innodb。
InnoDB的表数据和索引数据默认是存储在系统表空间中,但可以通过开启innodb_file_per_table选项将表数据和索引数据存放在独立表空间中。当表创建完之后,会在表所在的数据库文件夹里创建.frm文件用来存储表的结构,系统表空间对应的.ibdata文件存储数据文件,而当开启独立表空间时,则会在表所在的数据库文件夹里创建.ibd用来存储表数据和索引数据。
通过show table status语句可以查看InnoDB的表属性
mysql> show table status like 'user_stock'\G;
*************************** 1. row ***************************
Name: user_stock
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 1
Create_time: 2018-08-15 23:58:20
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
...
通过alter table语句修改已有表的存储引擎
ALTER TABLE table_name ENGINE=InnoDB;
自增长字段设置
当对InnoDB表设置了自增长字段之后,表会在内存中保存一个自增长计数器。
默认情况下自增长字段的初始值是1,但也可以通过配置auto_increment_offset参数将所有的自增长字段初始值设置为另外的值,而当表中插入数值时, InnoDB会求出当前表中的该列的最大值,然后在此基础上加1作为插入的数据。默认是以+1为增长的进度,但也可以通过auto_increment_increment配置所有自增长字段的自定义增长进度。
InnoDB表主要的限制
InnoDB表目前只支持最多1017个列
InnoDB表目前支持最大64个二级索引
多列索引目前支持最大16个列
如果表中不存在text或者blob类型字段时, 行数据整体的最大长度是65535个字节
mysql> CREATE TABLE t (a VARCHAR(8000), b VARCHAR(10000), c VARCHAR(10000), d
VARCHAR(10000), e VARCHAR(10000),f VARCHAR(10000), g VARCHAR(10000))
ENGINE=InnoDB;
ERROR 1118 (42000): Row size too large. The maximum row size for theused table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx