The only way that I could resolve this eventually was to extend/overwrite the Product model _afterSave function in a new module (make sure the new class extends extends Mage_Catalog_Model_Product
).
Like so:
/**
* Saving product type related data and init index
*
* @return Mage_Catalog_Model_Product
*/
protected function _afterSave()
{
$this->getLinkInstance()->saveProductRelations($this);
if($this->getTypeId() !== 'configurable')
{
$this->getTypeInstance(true)->save($this);
}
/**
* Product Options
*/
$this->getOptionInstance()->setProduct($this)
->saveOptions();
$result = parent::_afterSave();
Mage::getSingleton('index/indexer')->processEntityAction(
$this, self::ENTITY, Mage_Index_Model_Event::TYPE_SAVE
);
return $result;
}
The key bit being:
if($this->getTypeId() !== 'configurable')
{
$this->getTypeInstance(true)->save($this);
}
}
It looks like for some reason, when creating the configurable product it was trying to save an object that already existed in the resource adapter possibly - Some thoughts on this would be appreciated.