从win系统打包的数据库放到linux下,发现数据库不能写入,提示table is read only ,添加各种权限也是一样,找了很多解决方法,最终找到了
一客户的mysql数据库600多M.从windows换成linux.导出再导入太麻烦了.于是直接复制物理文件到linux.先创建好linux下面的mysql数据库.再把文件wget过来覆盖掉之后.问题出现了,
在mysql中,Select之类的都正常,但在phpmyadmin优化数据库的时候中提示:Table 'jieqi_xxxx' is read only,给数据库目录的所属用户和组改为mysql,并加上777的权限,还是一样提示.程序中使用root连接,也是一样的提示....百般SM加鞭策无果.最后想到用myisamchk来检查一下,也提示Table is read only.于是满世界找答案啊...终于功夫不负哥,还真找到了.以下是原文:
I just encountered a similar problem on one of my production servers
this morning. (I'm still investigating the cause.) After doing a
quick bit of Google-searching, this solved my problem:
mysqladmin -u <username> -p flush-tables
By the way: All directories in /var/lib/mysql should have 700
permissions (owned my the mysql user) and everything within those
directories should be 660 (owned by the mysql user and mysql group).
cd /usr/local/mysql/bin
执行如下mysqladmin
./mysqladmin -u <username> -p flush-tables
然后输入root账号的密码,马上就好了,没有任何任何提示,重新打开drupal,一切正常。
运行flush-tables后,read only问题解决.
如果是使用中的数据库突然出现些类问题
在Linux下面执行下面命令就可以了,当然你要找到你的mysql目录
linux中
代码如下:
/usr/local/mysql/bin/mysqladmin -u root -p flush-tables
windows中
可以在cmd中执行lush-tables
也可以在phpmyadmin 直利用修复表进行修改
如果是导入还原数据
,所以将该数据库文件夹下面所有表文件chmod成777,chown成”_mysql”,但这次问题更严重,drupal里面现实table crached。没办法,马上Google,发现其实解决起来挺容易的。
首先,找到mysqladmin所在位置,一般都在mysql/bin下面,然后运行一下命令:
代码如下:
./mysqladmin -u root -p flush-tables
之后输入root账号的密码,马上就好了,没有任何任何提示,重新打开drupal,一切正常。
通过这次,也找到了数据库文件的正确权限设置:data下面数据库文件夹700,表文件660,所有文件都应owned by mysql。