Hola, cuando ejecuto la tarea de imporación de artículos desde el administrador (en una ventana nueva) todo se importa perfectamente. Pero si ejecuto esta misma tarea desde un Cron programado, el log me da el error siguiente:
2011-01-10T18:17:13+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '105-0-1-1.0000-0' for key 2
2011-01-10T18:17:17+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '107-0-1-1.0000-0' for key 2
2011-01-10T18:17:18+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '108-0-1-1.0000-0' for key 2
2011-01-10T18:17:19+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '109-0-1-1.0000-0' for key 2
2011-01-10T18:17:21+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '110-0-1-1.0000-0' for key 2
2011-01-10T18:17:22+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '111-0-1-1.0000-0' for key 2
2011-01-10T18:17:23+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '112-0-1-1.0000-0' for key 2
2011-01-10T18:17:24+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '113-0-1-1.0000-0' for key 2
2011-01-10T18:17:25+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '114-0-1-1.0000-0' for key 2
El tema esta en que el mismo fichero, desde mi navegador se importa perfectamente.
A ver si alguien me puede ayudar,
Muchas gracias a todos.
¿puedes darnos mas detalles de lo que has hecho?
que perfil estas usando, como has configurado el CRON, ... todo lo que puedas que nos ayude a entender la situacion
Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo
Algunas cosas que hay que saber sobre Magento, y el comercio online
Utilizo este código en un php que se ejecuta bien invocándolo desde el navegador (que funciona perfectamente) o bien desde una tarea cron programada (que es donde me aparecen esos errores en el fichero .log
Saludos y gracias,
require_once '/app/Mage.php';
// wget -O - http://<www.example.com>/Cron_Import.php/?files=3XSEEEE.csv
umask(0);
//$_SERVER['SERVER_PORT']='443';
Mage::app();
$profileId = 3; //put your profile id here
// $filename = Mage::app()->getRequest()->getParam('files'); // set the filename that is to be imported - file needs to be present in var/import directory
$filename = $rutaficheros.'articulos.csv';
if (!isset($filename)) {
die("No file has been set!");
}
$logFileName= 'articulos.log';
$recordCount = 0;
//echo $logFileName;
//exit();
Mage::log("Comienza la importacion",null,$logFileName);
$profile = Mage::getModel('dataflow/profile');
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);
Mage::getSingleton('admin/session')->setUser($userModel);
if ($profileId) {
$profile->load($profileId);
if (!$profile->getId()) {
Mage::getSingleton('adminhtml/session')->addError('The profile you are trying to save no longer exists');
}
}
Mage::register('current_convert_profile', $profile);
$profile->run();
$batchModel = Mage::getSingleton('dataflow/batch');
if ($batchModel->getId()) {
if ($batchModel->getAdapter()) {
$batchId = $batchModel->getId();
$batchImportModel = $batchModel->getBatchImportModel();
$importIds = $batchImportModel->getIdCollection();
$batchModel = Mage::getModel('dataflow/batch')->load($batchId);
$adapter = Mage::getModel($batchModel->getAdapter());
foreach ($importIds as $importId) {
$recordCount++;
try{
$batchImportModel->load($importId);
if (!$batchImportModel->getId()) {
$errors[] = Mage::helper('dataflow')->__('Skip undefined row');
continue;
}
$importData = $batchImportModel->getBatchData();
try {
$adapter->saveRow($importData);
} catch (Exception $e) {
Mage::log($e->getMessage(),null,$logFileName);
continue;
}
if ($recordCount%20 == 0) {
Mage::log($recordCount . ' - Completedado.',null,$logFileName);
}
} catch(Exception $ex) {
Mage::log('Record# ' . $recordCount . ' - SKU = ' . $importData['sku']. ' - Error - ' . $ex->getMessage(),null,$logFileName);
}
}
foreach ($profile->getExceptions() as $e) {
Mage::log($e->getMessage(),null,$logFileName);
}
}
}
echo 'Importacion completada.';
Mage::log("Import Completed",null,$logFileName);
¿que tipo de perfil estas usando? ¿como esta configurado el perfil?
¿que version de magento? (indicalo en tu firma)
Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo
Algunas cosas que hay que saber sobre Magento, y el comercio online
Utilizo Magento 1.4.1.1 y es el perfil estándar que viene con la instalación usando un fichero CSV separado por ;
ya, pero es que puedes tener todos los campos o no, con los nombres de las columnas o no... si te estoy preguntando cosas es que necesito saberlas para poder darte una respuesta adecuada.
Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo
Algunas cosas que hay que saber sobre Magento, y el comercio online
Muchas gracias por tu ayuda, perdona que no sea más concreto. Utilizo el perfil estándar, tal y como vienen por defecto, con los nombres de las columnas en la primera línea.
Saludos,