【问题标题】:Operation not allowed when innodb_forced_recovery > 0 [SqlYog]当 innodb_forced_recovery > 0 [SqlYog] 时不允许操作
【发布时间】:2025-11-29 09:25:01
【问题描述】:

我已经使用 SQLyog 创建了一个表。当我向其中插入值时,它会弹出以下错误消息:

Operation not allowed when innodb_forced_recovery > 0.

我的表只包含四列,包括一个主键。 以下是我的创建和插入查询:

CREATE TABLE `news` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `slug` varchar(100) NOT NULL,
  `descr` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

insert into `test`.`news` (`title`, `slug`, `descr`)
 values ('titleOne', 'slugOne', 'descOne')

【问题讨论】:

  • 嗨,你能分享你的创建表吗?
  • 问题已更新为创建查询。
  • 因为 MySQL 处于只读模式。打开my.cnf文件,将此参数设置为零并重启MySQL实例
  • @ravnur:非常感谢。成功了!

标签: mysql sql sqlyog


【解决方案1】:

当 MySQL 处于只读模式时会出现此错误。

编辑文件/etc/my.cnf

并注释掉下面一行

# innodb_force_recovery = 1

显然这个设置会导致 innodb 变成只读的。如果您无法访问共享主机上的 /etc/my.cnf,请让您的主机为您修复它。当它在 /etc/my.cnf 中被注释掉或不存在时,它会恢复为 default setting of 0

【讨论】:

    【解决方案2】:

    这也发生在我身上,但我所做的是在创建从 InnoDB 到 MyISAM 的表期间更改 SQL 引擎 像 ENGINE=innoDB 到 ENGINE=MyISAM

    因此,如果您有数据库并想上传它,请使用任何编辑器打开它,并将每个表末尾的引擎从 innoDB 更改为 MyISAM。

    这解决了问题。

    【讨论】: