I have installed magento2.1 and it was working properly with multi-store.
When I have disabled some categories from a "sub" store, and try to add any product (already assigned to "sub" store) to that category (which is edited in "sub" store) system returns error url key for specified store already exists.
If I removed "sub" store from "product in website" and try to assign that category again it saved successfully.
That's mean it is the issue with categories which has different value of any attribute in multi-store view.
I found so many post regarding this, but unable to fix this issue.
How to solve this issue in magento2?
2 Answers 2
I did following changes and it is working.
Magento\UrlRewrite\Model\Storage\DbStorage.php file
protected function insertMultiple($data)
{
try {
$keys=array();
foreach($data as $current=>$_data)
{
$key = $_data['request_path'];
if(in_array($key,$keys))
{
unset($data[$current]);
}else
{
$keys[]=$key;
}
}
$this->connection->insertMultiple($this->resource->getTableName(self::TABLE_NAME), $data);
} catch (\Exception $e) {
if ($e->getCode() === self::ERROR_CODE_DUPLICATE_ENTRY
&& preg_match('#SQLSTATE\[23000\]: [^:]+: 1062[^\d]#', $e->getMessage())
) {
throw new \Magento\Framework\Exception\AlreadyExistsException(
__('URL key for specified store already exists.')
);
}
throw $e;
}
}
Reference :
If you upgraded an existing Magento 1 store, there are a couple columns in the product entity table which may contain data that can contribute to this. We migrated from Magento 1 and ran into this issue when updating / moving products in a category.
What I ended up doing was making sure I knew for sure that there were no duplicate values within a store for each url_key value. If I was sure there were no duplicates, I then deleted the value for the attribute url_path for products. After removing that data, I had to save the categories again to regenerate some rules, but things worked. We haven't had an issue with it since.