Mémo pour modifier le moteur de la table « oauth_nonce » de MyISAM à INNODB.
Suite à des problèmes de réplication de bases MySQL Magento Enterprise 1.14.x, la solution a été de modifier le moteur utilisé pour la table « oauth_nonce ».
Malheureusement, un changement en utilisant cette requête ne suffit pas :
1 |
ALTER TABLE oauth_nonce ENGINE=INNODB |
La table doit être supprimée puis recréée.
Comme c’est le cas de la table « catalog_category_product_index_tmp » dans Magento 2 :
Voir le code de la fonction « recreateCatalogCategoryProductIndexTmpTable » à la ligne 598 ici : https://github.com/magento/magento2/blob/321278b5027077b346e16ad4cac5407d65c918fd/app/code/Magento/Catalog/Setup/UpgradeSchema.php
Etape 1 – Récupérer la requête de création de la table « oauth_nonce »
Requête à exécuter :
1 |
show create table oauth_nonce; |
Résultat :
1 2 3 4 5 6 7 8 9 |
+-------------+-------------...-----------------------------+ | Table | Create Table |+-------------+------------...-----------------------------+ | oauth_nonce | CREATE TABLE `oauth_nonce` ( `nonce` varchar(32) NOT NULL COMMENT 'Nonce String', `timestamp` int(10) unsigned NOT NULL COMMENT 'Nonce Timestamp', UNIQUE KEY `UNQ_OAUTH_NONCE_NONCE` (`nonce`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='oauth_nonce' | |+-------------+------------...-----------------------------+ |
Etape 2 – Supprimer la table
1 |
drop table oauth_nonce; |
Etape 3 – Créer la table avec le nouveau moteur
Remplacer MyISAM par INNODB dans la requête récupérée à l’étape 1 :
1 2 3 4 5 |
CREATE TABLE `oauth_nonce` ( `nonce` varchar(32) NOT NULL COMMENT 'Nonce String', `timestamp` int(10) unsigned NOT NULL COMMENT 'Nonce Timestamp', UNIQUE KEY `UNQ_OAUTH_NONCE_NONCE` (`nonce`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='oauth_nonce'; |