Algolia Magento 2 MySQL adapter: Missing required configuration option ‘host’

By | April 2, 2024
Spread the love

The error message you’re encountering, “Missing required configuration option ‘host'”, suggests that the Algolia Magento 2 MySQL adapter is expecting a configuration option called ‘host’, but it is not provided. This typically indicates an issue with the configuration settings for the Algolia extension in your Magento 2 installation.

Algolia Magento 2 Common Error Message on Product Save and Shipment Save Error “Missing required configuration option ‘host'”

To fix this error message, you have to change on file vendor\algolia\algoliasearch-magento-2\Helper\Data.php

protected function getSalesData($storeId, Collection $collection)

Add below line

catch (\Exception $e) {
    $salesConnection = $this->resource->getConnection();
}

It will look like this.

/**
     * @param $storeId
     * @param Collection $collection
     * @return array
     */
    protected function getSalesData($storeId, Collection $collection)
    {
        $additionalAttributes = $this->configHelper->getProductAdditionalAttributes($storeId);
        if ($this->productHelper->isAttributeEnabled($additionalAttributes, 'ordered_qty') === false
            && $this->productHelper->isAttributeEnabled($additionalAttributes, 'total_ordered') === false) {
            return [];
        }

        $salesData = [];
        $ids = $collection->getColumnValues('entity_id');
        if (count($ids)) {
            $ordersTableName = $this->resource->getTableName('sales_order_item');
            try {
                $salesConnection = $this->resource->getConnectionByName('sales');
            } 
            catch (\DomainException $e) {
                $salesConnection = $this->resource->getConnection();
            } 
            catch (\Exception $e) {
                $salesConnection = $this->resource->getConnection();
            }
            
            $select = $salesConnection->select()
                ->from($ordersTableName, [])
                ->columns('product_id')
                ->columns(['ordered_qty' => new \Zend_Db_Expr('SUM(qty_ordered)')])
                ->columns(['total_ordered' => new \Zend_Db_Expr('SUM(row_total)')])
                ->where('product_id IN (?)', $ids)
                ->group('product_id');
            $salesData = $salesConnection->fetchAll($select, [], \PDO::FETCH_GROUP | \PDO::FETCH_ASSOC | \PDO::FETCH_UNIQUE);
        }
        return $salesData;
    }