Mysql ERROR 1146,magento 1146 数据库错误

玩了一段时间magento 但是呢 

最近重装了 server2012 重新去配置环境时 

打开magento 本地网址 发现 熟悉的错误界面

查看magento错误日志后 也是熟悉的那几段话 

初步怀疑是权限问题,但是最终不是这个原因 ,因为我配置好权限后 重新安装magento发现正常

怎么办做了很久的资料全在数据库 这下难道白忙活了吗?

我记得我是直接复制magento 数据库文件夹到新库

于是我就用pma 工具手工看一下能不能查询数据,结果只看到表结构的一部分 

而无法打开数据表内容 

用客户端 mysql管理工具试试

\Navicat for MySQL  打开后出现Mysql ERROR 1146

后来 搜索了一番 发现是一个低级错误,没文化导致

现记录如下 避免后人费时间走弯路

~~~~~~~~~~~分割线~~~~~~~~~~~~~~~

  采用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进行拷贝肯定会导致该文件中的数据出错的(具体错误原因没有深入学习)。

 

非凡网 博客

我只是帮你筛选价值。

你也许喜欢

发表评论