作家
登录

关于MySQL ERROR 1146 Table doesnt exist的解析

作者: 来源: 2017-10-11 15:04:04 阅读 我要评论

where name='test/kkkkm1';    
  • +----------+-------------+------+--------+-------+-------------+------------+---------------+------------+    
  • | TABLE_ID | NAME        | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE | SPACE_TYPE |    
  • +----------+-------------+------+--------+-------+-------------+------------+---------------+------------+    
  • |      374 | test/kkkkm1 |   33 |      6 |   540 | Barracuda   | Dynamic    |             0 | Single     |    
  • +----------+-------------+------+--------+-------+-------------+------------+---------------+------------+ 
  • 【编辑推荐】

    1. MySQL技能晋升篇 — sqlyog高等应用
    2. 深度解读 | 阿里云新一代关系型数据库 PolarDB
    3. 若何应用简单的SQL萌芽在MySQL上钩算中位数
    4. GitHub的MySQL基本架构主动化测试
    5. 苹不雅开源iOS内核,全球数据库排名MySQL三连跌
    【义务编辑:庞桂玉 TEL:(010)68476606】

    比如这里的FLAG列为33,他实际上是一个位图表示方法,分别表示如下信息:

    33的二进制为00100001大年夜低位开端1:大年夜源码注释来看本位COMPACT/COMPRESSED/DYNAMIC均为10000: ZIP_SSIZE flag 这四位用于支撑紧缩功能如COMPRESSED1:ATOMIC_BLOBS flag 这一位是COMPACT和DYNAMIC重要差别地点,请看源码注释0:DATA DIRECTORY and innodb-file-per-table flag为了支撑DATA DIRECTORY语法0:SHARED tablespace flag为了支撑TABLESPACE语法

    然后我们测试一下:

    如不雅我们建立如下的表:   CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE = innodb_file_per_table   DATA DIRECTORY = '/root/mysql5.7.14/percona-server-5.7.14-7/mysql-test/var/mysqld.1';   其type为97二进制为  01100001:应用DATA DIRECTORY建立应用ATOMIC_BLOBS且无紧缩则DYNAMIC格局   详见:15.5.5 Creating a File-Per-Table Tablespace Outside the Data Directory   如不雅我们建立如下的表:   CREATE TABLESPACE tt1 ADD DATAFILE '/root/mysql5.7.14/tt1.ibd';   CREATE TABLE tsh (c1 INT ) TABLESPACE tt1 ROW_FORMAT=COMPACT ;   其type为129二进制为 10000001:应用TABLESPACE语法建立不应用ATOMIC_BLOBS且无紧缩则为COMPACT格局   详见:15.5.9 InnoDB General Tablespaces 

    3、如不雅不克不及找到则报错

    我们可以看到应用8位一个字节罢了就可以表示出大年夜量的信息,这也是位图的优势,其他比如 MTYPE/PRTYPE也是这种表示方法

    接下来我们回到主题,须要看看这个错到底是哪里报错来的?进行trace后如下,我们来看看重要部分:

    留意这里的trace是mysql debug版本下查看函数调用的重要办法参考官方文档26.5.1.2 Creating Trace Files502 T@2: | | | | | | | | | | | >ha_innobase::open_dict_table

    1. 503  T@2: | | | | | | | | | | | | >dict_table_open_on_name    
    2.    504  T@2: | | | | | | | | | | | | | dict_table_open_on_name: table'test/test1bak'    
    3.    505  T@2: | | | | | | | | | | | | | >dict_table_check_if_in_cache_low    
    4.    506  T@2: | | | | | | | | | | | | | | dict_table_check_if_in_cache_low: table'test/test1bak'    
    5.    507  T@2: | | | | | | | | | | | | | <dict_table_check_if_in_cache_low 125    
    6.    508  T@2: | | | | | | | | | | | | | >dict_load_table    

        推荐阅读

        因为这些原因 让你讨厌DIY装机吗?

      DIY就是靠你本身着手做的意思,这意味着DIY拥有很大年夜的自由度和那份无人能赐与的成就感,但当然了,伴跟着的也拥有必定的难度与障碍。对于我们DIY装机来说,那些DIY玩家应当也就是凭借着前面所说那份>>>详细阅读


      本文标题:关于MySQL ERROR 1146 Table doesnt exist的解析

      地址:http://www.17bianji.com/lsqh/37797.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)