it-swarm.dev

Aggiornamento componente: la funzione del file di errore DB non ha restituito alcun errore

Ho lavorato su un componente ma ho notato che quando lo aggiorno ottengo un errore (qualcosa come "Aggiornamento componente: la funzione del file di errore DB non ha restituito alcun errore", non esatta ma chiusa).

Ho notato che ciò è dovuto alle righe nella tabella delle estensioni (solo nella tabella delle estensioni). Eliminarli li risolve. Ma in pratica si tratta di "disinstallare" il componente senza rimuovere i suoi file/dati (oltre a quelli di configurazione), quindi non è davvero un'opzione per fare uno script di preflight e farlo all'aggiornamento.

A causa della natura del componente ho una libreria che si installa accanto ad esso, quindi ho usato lo strumento installerscript di F0F (e l'ho esteso poiché non ha alcuna opzione per installare le librerie). F0F ha una funzione chiamata bugfixDBFunctionReturnedNoError() che corregge l'errore usando la tecnica sopra descritta. Tuttavia, è stato fatto per farlo nell'installazione nel caso in cui fosse disinstallato e lasciato tutto ciò che rimaneva. Ma ho bisogno che sia aggiornato.

Ho apportato alcune modifiche allo script del programma di installazione per farlo funzionare anche con l'aggiornamento e ci sta lavorando. Tuttavia non è il modo per aggirare questo problema, qualche idea su questo?

2
Jordan Ramstad

Risolto il problema, quando si crea un componente è necessario disporre di almeno 1 file sql di aggiornamento vuoto o non funzionerà. Non solo il tipico file index.html per assicurarsi che il programma di installazione non salti la cartella.

In genere il file sarebbe qualcosa come sql/updates/mysql/VERSION.sql Sostituzione della versione con la versione effettiva richiesta. Sono fiducioso che si tratti di un bug, non dovrebbe richiedere un file sql durante l'aggiornamento ma non è urgente se lo è, o quello o c'è qualcos'altro che mi manca.

2
Jordan Ramstad

Ricevo questo errore abbastanza spesso su un sistema di test quando provo ad installare un componente che utilizza gli aggiornamenti SQL e causa la prima volta durante l'installazione di un errore (anche se non correlato a SQL, ad esempio un file mancante dal file manifest).

Ecco alcuni passaggi su come risolvere questo problema, disinstallando manualmente il componente, poiché dal gestore estensioni l'installazione/potrebbe non riuscire.

Trova l'id della tua estensione (potresti anche trovare più voci)

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

Rimuovi da #__schemas le voci per l'estensione , dove extension_id è l'ID trovato precedente. Rimuovi anche tutte le voci per estensioni non esistenti:

Rimuovi eventuali risorse per la tua estensione:

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

Rimuovi tutte le voci di menu:

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

Reinstallare.

Nota: originariamente pubblicato su SO .

1
Valentin Despa