查询mysql 安装目录下my.ini 文件



首先停止源数据库服务。然后拷贝data目录中对应数据库名称的目录(mydb),其中.frm文件为数据库表定义文件。

然后拷贝到新数据库安装目录的data目录下,本文例子:c:\ProgramData/MYSQL/MYSQL SERVICE 5.5\data\

然后停止新数据库服务,在新数据库创建一个与旧库名相同的库,发现在data目录下面已经有ib_logfile0ib_logfile1ibdata1三个文件了(免安装版本解压后是没有的),之后停掉源数据库服务,将ibdata1文件库数据库文件夹拷贝过来进行覆盖。最后启动新数据库服务就可以对数据库进行正常操作了。

※以上步骤的操作针对innodb类型的数据库。

因为mysql5.1版本后,innodb不再作为默认的设置了

附页:网上的备份数据库例子:

在使用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,用showtables查看表是否已经建立起来了。然后停止你自己的mysql服务,发现在data文件下面已经有ib_logfile0、ib_logfile1和ibdata1三个文件了(免安装版解压后是没有的),之后停掉别人的mysql服务,只将ibdata1文件拷贝过来进行覆盖,最后启动你自己的mysql服务就可以对数据库进行正常操作了。


备份:



将上面俩文件夹备份 ()

更多相关文章

  1. mysql日志文件过大导致磁盘空间不够的问题
  2. 使用Python 3更新MySQL数据库
  3. 使用IP地址方法登录MySQL数据库Can't connect to MySQL serv
  4. 关于淘宝的数据库系统
  5. PHP读取Excel文件的内容并写入Mysql数据库
  6. MySQL数据库引擎简介
  7. 如何创建a '。sql的文件
  8. PHP数据库类的封装
  9. python pymysql连接数据库pymysql.err.OperationalError 1044

随机推荐

  1. 使用AJAX根据Codeigniter中的下拉值获取
  2. 11、javascript中字符串常用操作总结、JS
  3. Angular JS复选框 - 模型不默认为false
  4. RegExp:匹配除Javascript中的正则表达式值
  5. 前台 post方法提交却变成了 get 方法
  6. JavaScript的two-sum问题解法
  7. 我可以禁用“后退”按钮浏览器功能吗?
  8. JavaScript实际应用:父子页面交互
  9. JavaScript - 检查是否在全局上下文中
  10. 将一个youtube iframe放在另一个具有关闭