我使用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')
答案 0 :(得分:15)
当MySQL处于只读模式时会出现此错误。
修改档案/etc/my.cnf
。
并注释掉以下行
# innodb_force_recovery = 1
显然,此设置会导致innodb变为只读。如果您无法访问共享主机上的/etc/my.cnf,请让您的主机为您进行修复。当它在/etc/my.cnf中被注释掉或不存在时,它将恢复为default setting of 0
。
答案 1 :(得分:1)
这也发生在我身上,但我所做的是在将表从InnoDB创建到MyISAM时更改SQL引擎 像 ENGINE = innoDB到ENGINE = MyISAM
因此,如果您拥有数据库并想要上传它,请使用任何编辑器打开它,并将每个表末尾的引擎从innoDB更改为MyISAM。
这解决了问题。