解决Mysql 出现Table‘xxx’is read only问题

背景:在博客迁移过程,由于误操作原来的mysql无法启动,只能通过新建一个mysql,然后清空data目录,将原来的data都拷贝过去。

启动后登录没问题,读取也没问题,就是无法写入,出现了Table‘xxx’is read only。

我这是因为迁移后修改my.cnf文件多加了一个配置导致

\[mysqld\]
log-error                       = /app/data/mysql/logs/error.log
pid-file                        = /app/data/mysql/mysql.pid
port            = 3306
socket          = /app/data/mysql/tmp/mysql.sock
datadir         = /app/data/mysql/data
innodb\_undo\_directory        = /app/data/mysql/undo
#innodb\_undo\_tablespaces      = 4
#innodb\_force\_recovery =4  #这个配置不能乱加

当时在网上找大部分是方案一和方案二,我这个是用方案三解决。

方案一

找到mysqladmin 命令,权限没刷新的问题

`find / -name  mysqladmin`
`/usr/bin/mysqladmin -u root -p flush-tables`
`回车输入密码`

方案二

数据库目录的归属和权限不够,授权即可

chown -R mysql.mysql /app/data/mysql/chmod -R  
664 data

方案三

查看 my.cnf将 innodb_force_recovery =4 注释掉

`#innodb_force_recovery =4` 

ps: innodb_force_recovery =4 innodb_force_recovery 可以设置为1~6,大的数字包含前面所有数字的作用,当设置参数值大于0后,可以对标进行select、create、drop操作,但insert、update或者delete这类操作是不允许的。

想了解更多,请关注公众号5ycode

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值