1146 mysql_MySQL–ERROR 1146 (42S02):table doesn’t exist

1146 mysql_MySQL–ERROR 1146 (42S02):table doesn’t existERROR1146(42S02):Table‘xxx’doesn’texist可能是很多人都遇到的问题,尤其在数据库迁移或备份的时候mysql数据目录结构mysql数据目录下有如下几个重要文件:ibdata1ib_logfile0ib_logfile1数据库xx以及该目录下的一系列.frm文件其中ib_logfile0和ib_logfile1是关于数据库的一些日志文件数据…

大家好,又见面了,我是你们的朋友全栈君。

ERROR 1146 (42S02): Table ‘xxx’ doesn’t exist 可能是很多人都遇到的问题,尤其在数据库迁移或备份的时候

mysql数据目录结构

mysql数据目录下有如下几个重要文件:ibdata1

ib_logfile0

ib_logfile1

数据库xx 以及该目录下的一系列 .frm 文件

其中

ib_logfile0 和 ib_logfile1 是关于数据库的一些日志文件

数据库xx 是默认数据库和我们添加的数据库目录

ibdata1 存储了数据库的真实表数据

.frm 是存储了数据库表的结构描述说明

失误的操作过程

当我们把其他mysql下的目录,拷贝到我们新的mysql数据目录的时候,(仅仅是copy目录)

启动数据库,可以正常使用 show databases; 和 show tables;

但是在我们想继续查询表数据的时候 select * from video; ,报错了:

ERROR 1146 (42S02): Table ‘djangomysql.getvideo_video’ doesn’t exist1

2MariaDB [videos_db]> select * from video;

ERROR 1146 (42S02): Table ‘videos_db.video’ doesn’t exist

继续探索原因

因为数据库目录 和 表结构也是存储在 .frm 文件内,因此我们可以正常使用 show databases; 和 show tables;

为什么查询表数据的时候发生错误呢?

那是因为ibdata1 文件受影响了,表数据存储在ibdata1中

mysql是通过缓存的方式写入数据到ibdata1,当我们异常拷贝ibdata1的时候,可能缓存数据还没写入,导致有点出入,因此操作顺序很重要

解决方案

介于ibdata1数据被影响了,我们需要矫正下数据写入顺序,如下:

1、在新mysql数据目录下新建我们需要拷贝的数据库 mysql/videos, 同时把旧mysql中对应数据库下的文件全部拷贝过来

2、启动mysql,查询 show databases 和 show tables 确定无误后,退出mysql shell,停止mysql服务(比如 service mariadb stop)

3、然后把旧mysql中的ibdata1文件拷贝到新mysql数据目录下 mysql/ibdata1,这个时候我们会发现目录下有 ib_logfile0 ib_logfile1 和 ibdata1

4、再次启动新的mysql服务,然后验证,mysql服务正常了……

反思

数据库需要严格的备份流程、恢复流程,避免一些低级的操作方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134399.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 把旧光驱改CD播放机的方法

    把旧光驱改CD播放机的方法  随着我们自己PC机各项配件的不断升级,或多或少都会淘汰下来一些旧配件。它们是否真的就只能躺在角落里睡大觉呢?能够最大限度利用上这些曾经为我们驰骋沙场,立下赫赫战功的战将吗?那么就要看我们自己是否足够勤劳了。下面我们就以PC机中比较容易更新换代的光驱为例,来看看怎么让它恢复第二春吧。  先天条件  通常来说,光驱“惨遭”淘汰的时候读盘能力已经很弱了,但机械上一般都没有损坏,特别是CD是完…

    2022年4月29日
    57
  • 顶级域名 一级域名 二级域名 三级域名[通俗易懂]

    顶级域名 一级域名 二级域名 三级域名[通俗易懂]顶级域名又叫一级域名。数有几个点,一个点一级,两个点二级。顶级域名.combaidu.com二级域名.com.cnwww.baidu.combaike.baidu.com三级域名wencaifeng.blog.sohu.com一级域名xxx.com二级域名xxx.xxx.com​…

    2022年5月20日
    30
  • python的tkinter模块的导入_numpy scipy

    python的tkinter模块的导入_numpy scipy在python项目使用cxfreeze进行打包的时候,如果脚本里包括numpy的引用时,在打包时会报importError:cannotimportname’_methods’from’numpy.core’的错误,这时,在打包的setup.py文件中加入整个包numpy的引用即可packages=[“numpy”]options={“build_exe…

    2022年8月30日
    2
  • Pytorch 转置卷积

    Pytorch 转置卷积环境使用Kaggle里免费建立的Notebook教程使用李沐老师的动手学深度学习网站和视频讲解小技巧:当遇到函数看不懂的时候可以按查看函数详解。卷积不会增大输入的高和宽,通常要么不变,要么减半。而转置卷积则可以用来增大输入高宽。假设忽略通道,步幅为1且填充为0。输入张量形状为nh×nwn_h\timesn_wnh​×nw​,卷积核形状为kh×kwk_h\timesk_wkh​×kw​。共产生nhnwn_hn_wnh​nw​个中间结果。每个中间结果都是一个(nh+k

    2022年6月21日
    27
  • jmespath(1)基础语法

    jmespath(1)基础语法前言JMESPath是JSON的查询语言。您可以从JSON文档中提取和转换元素官方文档:https://jmespath.org/tutorial.html基本表达式JMESPath用的最多的

    2022年7月28日
    5
  • pycharm安装三方库_pycharm无网络安装第三方库

    pycharm安装三方库_pycharm无网络安装第三方库系统:mac10.15.3软件:2019.3pycharm导入第三方库的方法是1先点击File>OtherSetting>PreferencesforNewProjects2点击红框中的小+3在红线位置搜索要加载的第三方库,然后点击箭头所指的installPackage安装模块,点击后按钮按钮为灰色,等恢复后NumPy模块就已经安装完成了,并且显示在列表中,…

    2022年8月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号