17

我已经使用 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')
4

2 回答 2

19

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

编辑文件/etc/my.cnf

并注释掉以下行

# innodb_force_recovery = 1

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

于 2016-01-29T20:28:50.113 回答
1

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

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

这解决了这个问题。

于 2016-12-12T12:19:57.807 回答