J'ai créé une table en utilisant SQLyog. Lorsque j'y insère des valeurs, le message d'erreur suivant s'affiche:
Operation not allowed when innodb_forced_recovery > 0.
Ma table ne contient que quatre colonnes, dont une clé primaire. Voici mes requêtes de création et d’insertion:
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')
Cette erreur survient lorsque MySQL est en mode lecture seule.
Editez le fichier /etc/my.cnf
.
Et commentez la ligne suivante
# innodb_force_recovery = 1
Apparemment, ce paramètre fait que innodb devient en lecture seule. Si vous n'avez pas accès à /etc/my.cnf sur un hébergement partagé, demandez à votre hôte de le réparer pour vous. Lorsqu'il est mis en commentaire ou inexistant dans /etc/my.cnf, il se transforme en default setting of 0
.
Cela m’arrive aussi, mais j’ai modifié le moteur SQL lors de la création de la table d’InnoDB à MyISAM Comme dans ENGINE = innoDB à ENGINE = MyISAM
Donc, si vous avez votre base de données et souhaitez la télécharger, ouvrez-la avec n’importe quel éditeur et modifiez le moteur à la fin de chaque table d’innoDB à MyISAM.
cela a résolu le problème.