文章中所有操作均是在 MySQL 5.7 版本下进行的

引入问题

MySQL 使用过程中如果出现如下报错:

ERROR 1813 (HY000): Tablespace ‘`库名`.`表名`‘ exists.

出现这个问题的大部分原因,在使用 InnoDB 引擎的数据库中,所有已经存在的表都使在使用 InnoDB 引擎的数据库中,所有已经存在的表都使用两个文件保存。假设表名为 test1,则在数据库的数据目录下会有两个文件:

  • test1.frm 文件,存储数据表的定义信息
  • test1.ibd 文件,存储数据表的内容

如果上述的 frm 文件某种原因丢失或者损坏,再去操作(比如删除这个表重新创建表"drop table if exists tbl_test;")可能就会报上面的错。

解决问题

第一种办法(适用于 MySQL 5.6 及以前的版本)

先关闭 MySQL 的数据库服务,找到 MySQL 的安装目录下的 data 目录,找到报错的对应的库的目录进去,对应的表的 .ibd 文件直接删掉,重启服务即可。

第二种办法(适用于 MySQL 5.6 及以前的版本)

第一种办法不好使?在 MySQL 5.6 及以前的版本,这些文件都是可以公用的。创建一个临时的库(库名自己定),在这个库下面建立一个完全相同的表。关掉 MySQL 的数据库服务,找到 MySQL 的安装目录下的 data 目录下刚才创建的那个临时库的目录,进入找到 .frm 文件和 .ibd 文件,拷贝这两个文件到报错的那个库的目录中覆盖粘贴即可,这样就可以进行正常操作。

MySQL 5.7 版本的解决办法

MySQL 5.7 之后因为数据库会默认使用表空间隔离,所以上面的第二种办法就不好使了,因为这个时候怎么创建临时的库和相同名的表,它们的 .frm 和 .ibd 这两个文件并不能通用。第一种直接删除然而从新创建相同表还是会报错。那如何解决呢?其实还是利用第二种办法的原理。

  • 先关闭 MySQL 的数据库服务,删除掉报错的那个表的老的 .ibd 文件,比如 test1.ibd。
  • 修改 my.ini 文件(Linux 系统自行对应 my.cnf),修改 innodb_file_per_table=0,如果没有在最后面添加即可,保存文件,重启数据库服务。
  • 新建一个临时的库(库名随便取,比如 testdb),并创建一个同名的表,比如上面的假设表为 test1。这时候会在这个临时的库(testdb)的目录下出现这个表的 .frm 文件,比如 test1.frm。将这个文件拷贝到报错的数据库目录下覆盖粘贴即可。回到之前报错的库删除或重建这个表就不会报错了。
  • 最后不要忘了把修改的 innodb_file_per_table=0 换成 innodb_file_per_table=1 ,或者直接屏蔽或删除掉,保存重启数据库服务。

结语

关于 innodb_file_per_table 的作用会在后续的文章进行讨论。如果您的问题还没有解决,可以联系作者,作者很乐意帮忙。

MySQL数据库的InnoDB引擎TableSpaceExists问题解决相关推荐

  1. mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...

    概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...

  2. Mysql技术内幕innodb引擎笔记

    第2章 InnoDB存储引擎 2.3 InnoDB体系架构 InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构. 缓 ...

  3. 解决Mysql数据库提示innodb表不存在的问题

    转载来源 :解决Mysql数据库提示innodb表不存在的问题:https://www.jianshu.com/p/31cca5187ab2 发现mysql的error.log里面有报错: InnoD ...

  4. 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法

    关于MAC下pymysql连接mysql数据库报错2003的问题解决方法 问题:pymysql.err.OperationalError: (2003, "Can't connect to ...

  5. EF6 使用 和 连接MySql 数据库-闪退和若干问题解决

    在visual studio中用EF6连接Mysql数据库,搞了我两天,刚刚搞定,其实很简单就是版本的问题,这里填个坑. 首先,必备插件 1. MySql Connector/NET 2. MySql ...

  6. MySQL数据库MyISAM存储引擎转为Innodb

    之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,所以一直都没什么问题.但是最近出现了MySQL数据表经常被锁的情况,直接导致了用户连接网站时超时而返回502,于是决定把存储引擎转 ...

  7. mysql分页tmp_count,MySQL MyISAM和InnoDB引擎的写入速度优化比较,分页速度优化

    以下的文章主要介绍的是MySQL MyISAM的引擎和InnoDB引擎的实际性能的比较,我们首先是通过MySQL数据库的表结构来出MySQL MyISAM的引擎和InnoDB引擎的实际性能的实际操作. ...

  8. MySQL数据库:存储引擎

    一.什么是存储引擎: 存储引擎是MylSQL的核心,是数据库底层软件组织,数据库使用存储引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁级别.事务等功能.存储引擎是基 ...

  9. MySQL 数据库常用存储引擎的特点

    数据库的存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 获得 ...

最新文章

  1. Java 序列化之 Externalizable
  2. 《智能家居》培训第五天------2019-01-09
  3. AngularJS(6)-选择框Select
  4. c语言 单词长度统计,编写一个程序,打印输入中单词长度的直方图
  5. 一只猫引发的互联网争论
  6. FZOJβ #31.字符串
  7. linux 根目录分配多少好,Linux下硬盘怎么分区才合适:根分区(/)交换分区(/swap)和/boot分区需要多大...
  8. 索尼PS5突然“上架”?预购价约7244元...
  9. 如何彻底删除nginx
  10. MATLAB+simulink仿真学习
  11. 网络系统设计综合布线方案
  12. 运放放大倍数计算公式_运放电路设计【1】
  13. html转word 自动分页,word怎样自动分页
  14. ECCV 2022 | 石溪大学联合小鹏汽车提出先验知识指导的无监督领域自适应
  15. 游戏公司岗位有哪些?各职位都是做什么的?有什么特点?
  16. 对于时间管理初识--时间管理入门
  17. 如何将 Django 服务器单独部署到 heroku 上
  18. 港大计算机学院副院长,中科院许榕生教授、香港大学邹锦沛博士等一行访问我校...
  19. Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数
  20. wpf利用Visifire.Chart实现实时曲线绘制

热门文章

  1. 机器学习数据集!CV、NLP 一应俱全
  2. 数据挖掘之分类问题、决策树问题以及一个关于误差的泛化理论
  3. 【css】解决z-index失效或者不起作用
  4. 微信扫描登录(生成二维码)
  5. ARM架构SMMU驱动详解
  6. 使用 Docker 来快速上手中文 Stable Diffusion 模型:太乙
  7. die_visual
  8. 【NLP】中文分词:原理及分词算法
  9. Ubuntu 编译 ZBar
  10. 【IoT】蓝牙 GAP 和 GATT 协议简析