MySQL创建表错误:Tablespace for table xxx exists.
错误详情
在一个本地数据库中创建表时失败,再次创建时出现错误:Tablespace for table xxx exists.提示表空间已经存在了。
使用DESC命令查看表时提示表不存在。
直接到本地存储中找到数据库存放地址,发现存在xxx.ibd和xxx.frm文件,将两个文件全部删除,再次创建表成功。
错误原因
在MySQL中,如果存储引擎是InnoDB,在data目录下会看到2类文件: .frm 和 .ibd
(1)frm–表结构的文件
(2)ibd–表数据和索引的文件。该表的索引(B+树)的每个非叶子节,点存储索引,叶子节点存储索引和索引对应的数据
存储引擎是myisam,在data目录下会看到3类文件: .frm 、.myi 和.myd
(1) *.frm–表定义,是描述表结构的文件.
(2) .MYD–“D”数据信息文件,是表的数据文件。
(3) *.MYI–”"索引信息文件,是表数据文件中任何索引的数据树
因此在第一次创建时生成了ibd文件和frm文件,但是写入失败了
第二次创建的时候有同名文件,无法创建ibd和frm文件
错误解决
删除相关ibd和frm文件,重新创建即可。