it-swarm-es.tech

Actualización de componentes: la función del archivo de error de DB no devolvió ningún error

He estado trabajando en un componente pero noté que cuando lo actualizo me sale un error (algo así como "Actualización de componente: la función del archivo de error de DB no devolvió ningún error", no exacto pero cercano).

Noto que esto se debe a las filas en la tabla de extensión (solo la tabla de extensión). Eliminarlos lo arregla. Pero eso es básicamente "desinstalar" el componente sin eliminar sus archivos/datos (aparte de la configuración), por lo que realmente no es una opción hacer un script de verificación previa y hacerlo en la actualización.

Debido a la naturaleza del componente, tengo una biblioteca que se instala al lado, por lo que utilicé la herramienta installercript de F0F (y la extendí ya que no tiene la opción de instalar bibliotecas). F0F tiene una función llamada bugfixDBFunctionReturnedNoError() que corrige el error utilizando la técnica descrita anteriormente. Sin embargo, está hecho para hacerlo en la instalación en caso de que se desinstale y quede algo restante. Pero lo necesito hecho en la actualización.

Hice algunos cambios en el script del instalador para que también se ejecute en la actualización y está funcionando con eso. Sin embargo, no es la forma de evitar este problema, ¿alguna idea al respecto?

2
Jordan Ramstad

Resolvió el problema, al hacer un componente necesita tener al menos 1 archivo sql de actualización en blanco o fallará. No solo el archivo index.html típico para asegurarse de que el instalador no omita la carpeta.

Por lo general, el archivo sería algo así como sql/updates/mysql/VERSION.sql Reemplazando la versión con la versión real necesaria Estoy seguro de que esto es un error, no debería requerir un archivo sql en la actualización, pero no es urgente si lo es, ya sea eso o hay algo más que me falta.

2
Jordan Ramstad

Recibo este error con bastante frecuencia en un sistema de prueba cuando intento instalar un componente que usa actualizaciones de SQL y causa la primera vez que instalo un error (incluso no está relacionado con SQL, como un archivo faltante del archivo de manifiesto).

Aquí hay algunos pasos sobre cómo solucionar esto, desinstalando manualmente el componente, ya que desde el administrador de extensiones la instalación puede/fallará.

Encuentre la identificación de su extensión (también puede encontrar múltiples entradas)

SELECT * 
FROM  `#__extensions` 
WHERE  `name` LIKE  '%myextensionname%'
LIMIT 0 , 30

Eliminar de #__schemas las entradas para la extensión , donde extension_id es la identificación encontrada anterior. Elimine también cualquier entrada para extensiones no existentes:

Elimine cualquier activo para su extensión:

SELECT * 
FROM  `#__assets` 
WHERE  `name` LIKE  '%myextensionname%'
LIMIT 0 , 30

Eliminar cualquier entrada del menú:

SELECT * 
FROM  `#__menu` 
WHERE  `link` LIKE  '%myextensionname%'
LIMIT 0 , 30

Reinstalar.

Nota: publicado originalmente en ASÍ QUE .

1
Valentin Despa