在使用mysql数据库过程中,遇到了错误ERROR 1146 (42S02):Table doesn’t exist,经过了两天,终于解决了这个问题。引起该错误的原因不同,对应的解决方法也不同。这里只针对我的情况进行一下说明。可能写的比较乱,希望你慢慢看,下面是我整个从犯错误到解决问题的整个过程,有助于你更好的了解相关知识。
     先说一下发生该错误的情形。我是将别人的数据库目录下的data文件夹直接复制过来的,里面有三个数据库mysql、test和backupctrl,主要想要backupctrl数据库,记住不是备份,是拷贝,而且backupctrl是使用innodb作为存储引擎的,这两方面综合起来就导致了1146这个错误。
       因为要使用innodb做存储引擎,所以要对my.ini文件进行相应的修改。在my.ini文件中,你可以找到关于innodb的相关设置,但是被注释掉了。因为mysql5.1版本后,innodb不在作为默认的设置了。首先将skip-innodb注释掉,然后需要设置正确innodb的相关参数。
       采用innodb存储引擎,关系到data文件夹下面的一些文件:ib_logfile0、ib_logfile1和ibdata1,另外还有一个就是数据库名下面的众多.frm文件。先对这几个文件作简要介绍。
       ib_logfile0和ib_logfile1是关于数据库的一些日志文件;
       .frm文件是数据库中很多的表的结构描述文件;
       ibdata1文件时数据库的真实数据存放文件。
       在将别人的data文件夹整个复制过来后,你到mysql目录下的bin文件夹下运行命令:
       mysql  --console
       此时,你会发现很多的错误提示,该命令就是对环境进行测试的。如果你不理会这些错误,进入数据库,用show tables;命令发现数据库表存在,但是执行select等操作就会出现1146:Table doesn’t exist这个错误了。
     其实这是由ibdata1文件的错误引起的,这个应该在日志文件ib_logfile0和ib_logfile1中找到(这个本人没有验证),于是把ibdata1文件删除掉,再次执行该命令,发现没有提示错误了,但进入数据库以后,操作仍就导致1146这个错误。后来仔细一下,也是,你说你把ibdata1文件删除,相当于把数据库的真实数据删除了,这时你就会问为什么数据库表还存在呢,都能看到(其实我当初就是这么想的),因为数据库表结构的描述是在.frm的众多文件中的,所以能通过show tables;查看到。
       那么下一个问题就出来了:ibdata1文件是从别人那里拷贝过来的,为什么在那边能用,到我这边就不能用了呢?这就是最核心的问题所在,因为mysql是采用缓冲方式来讲数据写入到ibdata1文件中的,这正是fflush()函数存在的理由。因此当别人的mysql在运行时,你对data文件夹进行拷贝,即对ibdata1进行拷贝肯定会导致该文件中的数据出错的(具体错误原因没有深入学习)。
       知道了上面的问题,解决就简单多了,呵呵。首先,将别人的mysql服务停止(这个就不用说了吧,我的前两篇博文中有,你可以参考),然后在拷贝data文件夹,替换到你的相应目录下。这样,你再按照我的博文http://jazka.blog.51cto.com/809003/329423中介绍的方法对数据库进行操作就可以了。
       网上查找解决办法时,发现也有不少人有这个问题,而按照停止服务再拷贝的方式还是不行(我刚开始也不行,不过后来就好了,怪了,不知道为什么)。所以这里再说一种方法。首先在自己的mysql下,建立一个你即将要拷贝的数据库(数据库名要一样,里面不需要建表),然后将所有的.frm文件拷贝到你建的数据库文件夹下,此时再次进入mysql,用show  tables查看表是否已经建立起来了。然后停止你自己的mysql服务,发现在data文件下面已经有ib_logfile0、ib_logfile1和ibdata1三个文件了(免安装版解压后是没有的),之后停掉别人的mysql服务,只将ibdata1文件拷贝过来进行覆盖,最后启动你自己的mysql服务就可以对数据库进行正常操作了。
注:需要一个mysql innodb‘ 环境没有问题的 服务器 然后按照 红色字体写的,复制过去后,重新启动mysql 即可得到 正确 的表,然后到处sql文件,就可以随意使用了。

Mysql数据库的使用总结之ERROR 1146 (42S02)的更多相关文章

  1. MySQL 导出数据库,出现 “mysqldump: Got error: 1146”

    出现场景 在 cmd 导出数据库时: mysqldump -hlocalhost -uroot -p student_db > C:\student_db.sql 出现: mysqldump: ...

  2. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1146

    问题介绍:   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1146 MySql语法错误, 但是错 ...

  3. ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

    MySQL版本:mysql5.7.21 修改用户权限,刷新权限表,报1146 mysql> flush privileges; ERROR 1146 (42S02): Table 'mysql. ...

  4. 慢日志之二:ERROR 1146 (42S02): Table 'mysql.slow_log' doesn't exist,分析诊断工具之四

    去查看最新的slow log,发现没有最新的记录,上去检查slow log是否开启了. MySQL> show variables like '%slow%'; +--------------- ...

  5. ruby使用DBI连接MySQL数据库发生异常:in `error': Can't connect to MySQL server on 'localhost' (10061) (DBI::DatabaseError)

    Ruby使用DBI连接MySQL数据库一般为: require "dbi" dbh = DBI.connect("dbi:Mysql:test:localhost&quo ...

  6. Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use

    今天在别人的服务器上登录mysql发现无法登陆(Mysql别人实现安装好的) 密码和用户名都是正确的,但登录后报如下错误: ERROR 1045 (28000): Access denied for ...

  7. mysql数据库出现无法登录(ERROR 1045 ),预防和解决及系列问题解决方法。

      一 .当在windows下使用mysql数据库时,出现无法登录的现象,需要修改mysql数据库的roo密码时,我们可以使用一下两种方法. 1. (1)关闭mysql服务.然后在bin目录下使用cm ...

  8. 无法删除MySql数据库,报错1010 error dropping

    环境:MySQL.Navicat 8 操作:Drop database testDB 报错:1010 error dropping database 解决方法:          ps -ef | g ...

  9. powerdesigner连接MySQL数据库时出现Non SQL Error : Could not load class com.mysql.jdbc.Driver

    Non SQL Error : Could not load class com.mysql.jdbc.Driver 这是因为powerdesigner 无法找到驱动所产生的 解决办法是:配置系统的c ...

随机推荐

  1. mysql 主主互备

    双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到 ...

  2. (绝对官方好用,快速上手)针对grunt之前写的那篇有些乱,这次总结个清晰的

    安装 Grunt基于Node.js,安装之前要先安装Node.js,然后运行下面的命令. sudo npm install grunt-cli -g grunt-cli表示安装的是grunt的命令行界 ...

  3. android删除无用资源文件的python脚本

    随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...

  4. swif-throws异常抛出

    import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(c ...

  5. Oracle数据库的导入导出

    1.导出Oracle数据 A.使用命令行导出数据 exp username/password @database file= fullpath(如:D:\data.dmp) full=y B.使用工具 ...

  6. ip_conntrack table full dropping packet错误的解决方法

    ip_conntrack表满导致的,iptables开启后会加载ip_conntrack模块,来跟踪包.默认情况下ip_conntrack_max大小为65536. 查看ip_conntrack最大大 ...

  7. Oracle知识分类之异常

    Oracle异常分类                                                                                           ...

  8. CSS中有关水平居中和垂直居中的解决办法

    CCS中让div等块级元素在父级元素中居中的方法: (1)div{  margin:0 auto   } 该方法只能实现水平的居中,无法实现元素的垂直居中 (2)当div元素的宽高是固定的,然后设置位 ...

  9. imx6 关闭调试串口

    需要关闭imx6调试串口,用作普通的串口使用. 参考链接 http://blog.csdn.net/neiloid/article/details/7585876 http://www.cnblogs ...

  10. windows系统IIS环境下如何部署MVC项目

    首先打开IIS:第一步:添加MVC程序映射 打开其中的:处理程序映射,如下图: 点击界面右边操作中的:添加脚本映射,弹出下图: 请求路径:*           可执行文件:c:/Windows/Mi ...