During Magento installation, we have faced an error on the last step. Here you can find our technical specification:
Magento Version: Magento Enterprise Edition 2.2.1-2017-11-05-07-21-40
MySql Version: 5.7.21 Enterprise Edition
DB Configuration: group replication with remote router
The error is related to catalog_url_rewrite_product_category table, which has no primary key. This requirement is incompatible with database group replication, so we need to know if there’s a way to resolve it.
Here's intallation log:
Module 'Magento_Cms':
Installing data...
[ERROR] PDOException: SQLSTATE[HY000]: General error: 3098 The table does not comply with the requirements by an external plugin. in /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /var/www/html/salutiamo/vendor/magento/framework/DB/Statement/Pdo/Mysql.php(93): Zend_Db_Statement_Pdo->_execute(Array)
#2 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Statement.php(303): Magento\Framework\DB\Statement\Pdo\Mysql->_execute(Array)
#3 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#4 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('DELETE FROM `ca...', Array)
#5 /var/www/html/salutiamo/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(517): Zend_Db_Adapter_Pdo_Abstract->query('DELETE FROM `ca...', Array)
#6 /var/www/html/salutiamo/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(580): Magento\Framework\DB\Adapter\Pdo\Mysql->_query('DELETE FROM `ca...', Array)
#7 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(664): Magento\Framework\DB\Adapter\Pdo\Mysql->query('DELETE FROM `ca...')
#8 /var/www/html/salutiamo/vendor/magento/module-catalog-url-rewrite/Model/ResourceModel/Category/Product.php(83): Zend_Db_Adapter_Abstract->delete('catalog_url_rew...', '(url_rewrite_id...')
#9 /var/www/html/salutiamo/vendor/magento/module-catalog-url-rewrite/Model/Category/Plugin/Storage.php(70): Magento\CatalogUrlRewrite\Model\ResourceModel\Category\Product->removeMultipleByProductCategory(Array)
#10 /var/www/html/salutiamo/vendor/magento/framework/Interception/Interceptor.php(121): Magento\CatalogUrlRewrite\Model\Category\Plugin\Storage->beforeDeleteByData(Object(Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor), Array)
#11 /var/www/html/salutiamo/vendor/magento/framework/Interception/Interceptor.php(153): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->Magento\Framework\Interception\{closure}(Array)
#12 /var/www/html/salutiamo/generated/code/Magento/UrlRewrite/Model/Storage/DbStorage/Interceptor.php(26): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->___callPlugins('deleteByData', Array, Array)
#13 /var/www/html/salutiamo/vendor/magento/module-cms-url-rewrite/Observer/ProcessUrlRewriteSavingObserver.php(52): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->deleteByData(Array)
#14 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(72): Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver->execute(Object(Magento\Framework\Event\Observer))
#15 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(60): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod(Object(Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver), Object(Magento\Framework\Event\Observer))
#16 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Event/Manager.php(97): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#17 /var/www/html/salutiamo/generated/code/Magento/Staging/Model/Event/Manager/Proxy.php(95): Magento\Staging\Model\Event\Manager->dispatch('cms_page_save_a...', Array)
#18 /var/www/html/salutiamo/vendor/magento/framework/Model/AbstractModel.php(818): Magento\Staging\Model\Event\Manager\Proxy->dispatch('cms_page_save_a...', Array)
#19 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/Observer/AfterEntitySave.php(34): Magento\Framework\Model\AbstractModel->afterSave()
#20 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(72): Magento\Framework\EntityManager\Observer\AfterEntitySave->execute(Object(Magento\Framework\Event\Observer))
#21 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(60): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod(Object(Magento\Framework\EntityManager\Observer\AfterEntitySave), Object(Magento\Framework\Event\Observer))
#22 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Event/Manager.php(97): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#23 /var/www/html/salutiamo/generated/code/Magento/Staging/Model/Event/Manager/Proxy.php(95): Magento\Staging\Model\Event\Manager->dispatch('magento_cms_api...', Array)
#24 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/EventManager.php(52): Magento\Staging\Model\Event\Manager\Proxy->dispatch('magento_cms_api...', Array)
#25 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Operation/Create.php(138): Magento\Framework\EntityManager\EventManager->dispatchEntityEvent('Magento\\Cms\\Api...', 'save_after', Array)
#26 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/EntityManager.php(96): Magento\Staging\Model\Operation\Create->execute(Object(Magento\Cms\Model\Page), Array)
#27 /var/www/html/salutiamo/vendor/magento/module-cms/Model/ResourceModel/Page.php(397): Magento\Framework\EntityManager\EntityManager->save(Object(Magento\Cms\Model\Page))
#28 /var/www/html/salutiamo/generated/code/Magento/Cms/Model/ResourceModel/Page/Interceptor.php(141): Magento\Cms\Model\ResourceModel\Page->save(Object(Magento\Cms\Model\Page))
#29 /var/www/html/salutiamo/vendor/magento/framework/Model/AbstractModel.php(647): Magento\Cms\Model\ResourceModel\Page\Interceptor->save(Object(Magento\Cms\Model\Page))
#30 /var/www/html/salutiamo/vendor/magento/module-cms/Setup/InstallData.php(102): Magento\Framework\Model\AbstractModel->save()
#31 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(867): Magento\Cms\Setup\InstallData->install(Object(Magento\Setup\Module\DataSetup), Object(Magento\Setup\Model\ModuleContext))
#32 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(791): Magento\Setup\Model\Installer->handleDBSchemaData(Object(Magento\Setup\Module\DataSetup), 'data')
#33 [internal function]: Magento\Setup\Model\Installer->installDataFixtures()
#34 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(342): call_user_func_array(Array, Array)
#35 /var/www/html/salutiamo/setup/src/Magento/Setup/Controller/Install.php(109): Magento\Setup\Model\Installer->install(Array)
#36 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(82): Magento\Setup\Controller\Install->startAction()
#37 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#38 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(490): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#39 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(214): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#40 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(118): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#41 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/DispatchListener.php(93): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#42 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#43 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(490): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#44 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(214): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#45 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Application.php(314): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#46 /var/www/html/salutiamo/setup/index.php(35): Zend\Mvc\Application->run()
#47 {main}
Next Zend_Db_Statement_Exception: SQLSTATE[HY000]: General error: 3098 The table does not comply with the requirements by an external plugin., query was: DELETE FROM `catalog_url_rewrite_product_category` WHERE (url_rewrite_id in ((SELECT `url_rewrite`.`url_rewrite_id` FROM `url_rewrite` WHERE (`entity_id` IN ('3')) AND (`entity_type` IN ('cms-page'))))) in /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php:235
Stack trace:
#0 /var/www/html/salutiamo/vendor/magento/framework/DB/Statement/Pdo/Mysql.php(93): Zend_Db_Statement_Pdo->_execute(Array)
#1 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Statement.php(303): Magento\Framework\DB\Statement\Pdo\Mysql->_execute(Array)
#2 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('DELETE FROM `ca...', Array)
#4 /var/www/html/salutiamo/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(517): Zend_Db_Adapter_Pdo_Abstract->query('DELETE FROM `ca...', Array)
#5 /var/www/html/salutiamo/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(580): Magento\Framework\DB\Adapter\Pdo\Mysql->_query('DELETE FROM `ca...', Array)
#6 /var/www/html/salutiamo/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(664): Magento\Framework\DB\Adapter\Pdo\Mysql->query('DELETE FROM `ca...')
#7 /var/www/html/salutiamo/vendor/magento/module-catalog-url-rewrite/Model/ResourceModel/Category/Product.php(83): Zend_Db_Adapter_Abstract->delete('catalog_url_rew...', '(url_rewrite_id...')
#8 /var/www/html/salutiamo/vendor/magento/module-catalog-url-rewrite/Model/Category/Plugin/Storage.php(70): Magento\CatalogUrlRewrite\Model\ResourceModel\Category\Product->removeMultipleByProductCategory(Array)
#9 /var/www/html/salutiamo/vendor/magento/framework/Interception/Interceptor.php(121): Magento\CatalogUrlRewrite\Model\Category\Plugin\Storage->beforeDeleteByData(Object(Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor), Array)
#10 /var/www/html/salutiamo/vendor/magento/framework/Interception/Interceptor.php(153): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->Magento\Framework\Interception\{closure}(Array)
#11 /var/www/html/salutiamo/generated/code/Magento/UrlRewrite/Model/Storage/DbStorage/Interceptor.php(26): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->___callPlugins('deleteByData', Array, Array)
#12 /var/www/html/salutiamo/vendor/magento/module-cms-url-rewrite/Observer/ProcessUrlRewriteSavingObserver.php(52): Magento\UrlRewrite\Model\Storage\DbStorage\Interceptor->deleteByData(Array)
#13 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(72): Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver->execute(Object(Magento\Framework\Event\Observer))
#14 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(60): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod(Object(Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver), Object(Magento\Framework\Event\Observer))
#15 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Event/Manager.php(97): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#16 /var/www/html/salutiamo/generated/code/Magento/Staging/Model/Event/Manager/Proxy.php(95): Magento\Staging\Model\Event\Manager->dispatch('cms_page_save_a...', Array)
#17 /var/www/html/salutiamo/vendor/magento/framework/Model/AbstractModel.php(818): Magento\Staging\Model\Event\Manager\Proxy->dispatch('cms_page_save_a...', Array)
#18 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/Observer/AfterEntitySave.php(34): Magento\Framework\Model\AbstractModel->afterSave()
#19 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(72): Magento\Framework\EntityManager\Observer\AfterEntitySave->execute(Object(Magento\Framework\Event\Observer))
#20 /var/www/html/salutiamo/vendor/magento/framework/Event/Invoker/InvokerDefault.php(60): Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod(Object(Magento\Framework\EntityManager\Observer\AfterEntitySave), Object(Magento\Framework\Event\Observer))
#21 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Event/Manager.php(97): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#22 /var/www/html/salutiamo/generated/code/Magento/Staging/Model/Event/Manager/Proxy.php(95): Magento\Staging\Model\Event\Manager->dispatch('magento_cms_api...', Array)
#23 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/EventManager.php(52): Magento\Staging\Model\Event\Manager\Proxy->dispatch('magento_cms_api...', Array)
#24 /var/www/html/salutiamo/vendor/magento/module-staging/Model/Operation/Create.php(138): Magento\Framework\EntityManager\EventManager->dispatchEntityEvent('Magento\\Cms\\Api...', 'save_after', Array)
#25 /var/www/html/salutiamo/vendor/magento/framework/EntityManager/EntityManager.php(96): Magento\Staging\Model\Operation\Create->execute(Object(Magento\Cms\Model\Page), Array)
#26 /var/www/html/salutiamo/vendor/magento/module-cms/Model/ResourceModel/Page.php(397): Magento\Framework\EntityManager\EntityManager->save(Object(Magento\Cms\Model\Page))
#27 /var/www/html/salutiamo/generated/code/Magento/Cms/Model/ResourceModel/Page/Interceptor.php(141): Magento\Cms\Model\ResourceModel\Page->save(Object(Magento\Cms\Model\Page))
#28 /var/www/html/salutiamo/vendor/magento/framework/Model/AbstractModel.php(647): Magento\Cms\Model\ResourceModel\Page\Interceptor->save(Object(Magento\Cms\Model\Page))
#29 /var/www/html/salutiamo/vendor/magento/module-cms/Setup/InstallData.php(102): Magento\Framework\Model\AbstractModel->save()
#30 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(867): Magento\Cms\Setup\InstallData->install(Object(Magento\Setup\Module\DataSetup), Object(Magento\Setup\Model\ModuleContext))
#31 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(791): Magento\Setup\Model\Installer->handleDBSchemaData(Object(Magento\Setup\Module\DataSetup), 'data')
#32 [internal function]: Magento\Setup\Model\Installer->installDataFixtures()
#33 /var/www/html/salutiamo/setup/src/Magento/Setup/Model/Installer.php(342): call_user_func_array(Array, Array)
#34 /var/www/html/salutiamo/setup/src/Magento/Setup/Controller/Install.php(109): Magento\Setup\Model\Installer->install(Array)
#35 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(82): Magento\Setup\Controller\Install->startAction()
#36 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#37 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(490): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#38 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(214): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#39 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(118): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#40 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/DispatchListener.php(93): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#41 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#42 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(490): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#43 /var/www/html/salutiamo/vendor/zendframework/zend-eventmanager/src/EventManager.php(214): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#44 /var/www/html/salutiamo/vendor/zendframework/zend-mvc/src/Application.php(314): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#45 /var/www/html/salutiamo/setup/index.php(35): Zend\Mvc\Application->run()
#46 {main}