mysql: ERROR 1146 (42S02): Table ‘*****‘ doesn‘t exist

问题描述:

登录mysql,show tables; 表都存在,但是select * from table时, 报表不存在错误:
mysql> select * from table;

ERROR 1146 (42S02): Table '*****' doesn't exist

原因:

有两种可能的原因:

  1. 对于使用innodb的数据库, 从别的地方复制一个数据库时,只拷贝了数据文件,没有拷贝以ib*开头的文件

  2. mysql5.7 默认lower_case_table_names没有设置, 表示表名区分大小写。 在这种情况下创建的表, 如果之后将 lower_case_table_names 设置成 1, 重启mysql再去访问之前的表,就会报表不存在的错误。

解决方法:

  1. 对于第一种问题, 可以把mysql 数据文件root 目录下 以ib*开头的文件也拷贝过来,并且设置正确的文件属性和权限即可。

     cp /source_mysql_root_path/ib* /var/lib/mysql/ib*
     chown mysql : mysql ib*
     chmod 640 ib*
    
  2. 对于第二种问题,可以把lower_case_table_names 值设置回去(删除 或 = 0), 重启数据库,即可恢复。如果还需要设置lower_case_table_names=1,并且保留原来表中数据,可以先将数据导出备份, 然后修改参数lower_case_table_names, 重启mysql后,删除原来数据库,新建数据库后将备份数据导入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值