使用navicat 修改MySQL数据库的某个表后,无法再读取该表(MySQL-#1146-#1017)

  • 19th Dec 2016
  • 2 min read
  • Tags: 
  • MySQL
  • Updated on 8th Feb 2025

概述(abstract)

问题的产生原因是由于在Windows下使用Navicat客户端,操作位于CentOS上MySQL 5.6时,具体的执行一个重命名字段的操作时,Navicat停止了运行,然后将该Navicat强制的关闭后,再运行Navicat打开刚才重命名字段所在的表,再次卡死,反复操作几次,结果并没有改变.

解决1(figure it 1)

首先,去MySQL数据库所在的服务器,对MySQL服务进行重启

service mysqld restart

再去用Navicat操作MySQL ,报 ERROR 1146 table '' doesn't exist 的错误

解决2(figure it 2)

之后,通过查阅stackoverflow,可能是数据库文件权限的问题,然后照葫芦画瓢,使用下面的命令对其进行修改:

chown mysql:mysql /var/lib/mysql/ci/*

直接报,没有该文件

解决3(figure it 3)

需要通过下面的命令查询mysql data文件具体在什么位置

vim /etc/my.cnf

找到下面这行

datadir = /opt/mysql/db/data

再通过语句修改对应数据表所在数据库的权限,比如出现错误的表所在数据库的名字是'tmp_db'

chown mysql:mysql /opt/mysql/db/data/tmp_db/*

重新启动数据库

service mysqld restart

参考

stackoverflow#1