:::: MENU ::::

Error en Magento: Mage registry key “_singleton/core/resource” already exists

Error en Magento: Mage registry key “_singleton/core/resource” already exists
4 votos, 4.50 media (84% puntos)

Hoy se ha producido un error en una de las tiendas Magento que gestionamos. Nunca lo habíamos visto hasta ahora, pero hemos estado investigando cómo solucionarlo y os dejamos aquí nuestras conclusiones:

El problema se presentaba al intentar acceder a cualquier lugar de la tienda, tanto en el frontend como en el backend de Magento y muestra uno de esos errores tan característicos de Magento:

There has been an error processing your request: Mage registry key “_singleton/core/resource” already exists

El problema no ha sido difícil de identificar. El texto Mage registry key es indicativo de que algo sucede con la cache de la tienda, así que la primera opción ha sido borrar la cache de Magento. Al no tener acceso al administrador, lo hemos hecho manualmente, eliminando el contenido de la carpeta var/cache.

Al hacerlo, podíamos cargar una página de la tienda, y la siguiente vez se nos volvía a reproducir el error. Seguíamos sin poder acceder al administrador, así que nos hemos creado una solución ‘temporal’ para poder trabajar.

En el fichero index.php de la instalación de Magento, añadir las siguientes líneas:

  $app = Mage::app();
  if ($app != null) {    
    $cache = $app->getCache();    
    if ($cache != null) {        
      $cache->clean();    
    } 
  }

El código va insertado justo antes de la ejecución de Magento. Antes de la siguiente línea:

  Mage::run($mageRunCode, $mageRunType);

Con esto, hemos conseguido borrar la cache en cada carga de página, con lo que podíamos navegar con normalidad por la tienda y acceder al administrador.

Accediendo al administrador, hemos procedido a realizar las siguientes operaciones:

  • Refrescar todas las caches
  • Flush Magento Cache
  • Flush Cache Storage (necesario si usáis xCache, APC o similar)

Por precaución, aunque no tenía relación con el problema, hemos refrescado todos los índices de la tienda y limpiado el cache de archivos CSS y JS.

Luego se puede eliminar el parche del archivo index.php y todo vuelve a la normalidad.




5 Comments

  • Responder seo reus |

    Me ha encantado vuestro post y me ha sabido a poco pero ya sabeis lo que dice el dicho “si lo bueno es breve es dos veces bueno”. Me gustara volver a leeros de nuevo.
    Saludos

  • Responder Max |

    Me sorprende con la rapidez que se propagan las estupideces, a un idiota se le ocurrio este fix que es similar a comentar la linea que arroja una excepcion, nadie ee el codigo, no ven que estan DESACTIVANDO el cache… por favor no solo son idiotas para comprender codigo sino que tambien lo replican.

    Dediquense a otra cosa, son lamentables.

    • Responder Daniel Navarro Murillo |

      Muchas gracias por tu comentario, pero no es necesario insultar, sobre todo si no te lees el post completo.

      Evidentemente que estamos borrando la cache (lee el código porque la cache no se desactiva como tu indicas). Pero como se dice al final del post, después de borrarla hay que volver a dejar el index.php como estaba.

      Simplemente se trata de borrar la cache y dejarla activa de nuevo. ¿puedes aportar una solución mejor?.

  • Responder Toni |

    Hola,

    me he encontrado con el mismo error y pese a borrar caché como ya comentáis volvía a suceder al entrar de nuevo.

    Al ir a revisar si la compilación estaba activada (Sistema / Herramientas / Compilación) he visto que daba error de permisos diciendo que no podía escribir en la carpeta /includes ni en /includes/config.php

    En mi caso simplemente creando esta carpeta, y poner dentro el config.php y el .htaccess correspondiente (son ficheros por defecto) y darle los permisos correctos 775 el problema ha desaparecido.

    Quizás no es la única solución a este problema, pero en mi caso esto era el causante.

    Un saludo.

Hey! Qué opinas sobre el artículo?