ERROR 1146 (42S02): Table 'XXXX.xx' doesn't exist

问题解析 : XXXX中的xx表不存在

问题原因 :
【1】插入数据或更改数据时使用的表输入错误
【2】linux的mysql区分大小写,数据库中的表名与输入的sql语句中的使用的表名大小写不一致导致的
【3】数据库操作时,误删mysql的文件导致(常见于数据库升级或迁移)
【4】在编译安装mysql时,没有指定innodb存储引擎

解决方案 :
【1】查看sql语句是否正确

        正确看下一条
        解决方法 : 
        自行查询sql语句比对

【2】查看是否有此表,大小写是否一致

        linux中mysql区分大小写,如正确请看下一条
        解决方案 :
        <1>查找该mysql数据库的配置文件my.cnf的路径
        <2>在my.cnf中的[mysqld]下,追加lower_case_table_names = 1
        1表示不区分大小写,0区分大小写
        <3>重启mysql,重新在此表插入数据,看是否可用
        systemctl restart maraidb/mysqld(centos7)
        /etc/init.d/mysqld restart(centos6)

【3】表被误删或数据库迁移缺失文件等原因。

         解决方案 :
         <1> 创建此表 (不同表结构根据实际情况)
         <2> 修复损坏表, 方式众多,此处只列出一种:
                repair table 表名;
         <3> 拷贝确实文件 :
             a.从另外相同的mysql数据库或之前的数据库备份中导出该表的数据,然后通过命令行导入进去
             b.或直接拷贝原有数据库文件".frm"、".MYD"、"*.MYI"等文件,如果原数据库引擎是InnoDB,切记还需拷贝ibdata1文件
                 (暴力点就直接拷贝之前备份了的data)
             c.重启数据库

【4】如果是编译安装mysql时,没有指定innodb存储引擎

         <1>重新编译
            cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
            24 
            make && make install

你可能感兴趣的:(Mysql,Excepation)