使用navicat 修改MySQL数据库的某个表后,无法再读取该表(MySQL-#1146-#1017)
Table of Contents
概述(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