it-swarm.dev

Vecchio aggiornamento sqls in esecuzione sull'aggiornamento

Sto costruendo un componente personalizzato e all'installazione iniziale su Joomla 3.3.6 si installa correttamente. Tuttavia, quando installo nuovamente, anziché eseguire l'aggiornamento sql solo dalla versione corrente +, apparentemente sta eseguendo TUTTI i file sql di aggiornamento dall'inizio.

Nel jos_extensions table, il mio componente è manifest_cache mostra la versione su "version":"3.3.2"-- questo dovrebbe significa che solo i file di aggiornamento sql 3.3.2+ devono essere eseguiti durante l'aggiornamento. Tuttavia, ogni aggiornamento è in esecuzione.

Qualcuno può pensare a una ragione per cui questo sta accadendo? Grazie per qualsiasi idea.

2
user101289

Dato che non ho alcuna reputazione;) un commento:

  • Devi controllare la tabella xyz_schemas per l'ultima versione di aggiornamento sql. Con estensione n.
  • Usi method = "upgrade" nel manifest xml?
  • Un problema più comune è che gli aggiornamenti sql sono not eseguiti se nell'installazione mancava una versione iniziale (vuota) di aggiornamento sql.
1
schnuti

Joomla tiene traccia delle versioni dello schema per sé e dei componenti in #__schemas tavolo. Elenca il extension_id e con il version_id e lo utilizza per determinare quali aggiornamenti eseguire. Ad esempio vedrai voci simili a questa:

700    3.3.6-2014-09-30
709    1.2.0

Come puoi immaginare dalle righe sopra 700 è id di un'estensione chiamata files_joomla ovvero Joomla.

Puoi leggere di più a riguardo nell'articolo di Joomla Doc " Gestione degli aggiornamenti dei componenti (Aggiorna file SQL) " (che indica 2.5 ma non credo che sia cambiato da allora).

Molte persone mancano questa nota nell'articolo:

Nota importante: Questi file vengono utilizzati anche per impostare il numero di versione nella tabella #__schemas. Questo numero di versione deve essere presente nella versione corrente del componente affinché i nuovi file SQL vengano eseguiti durante l'aggiornamento. Ad esempio, se si dispone della versione 1.0 e si sta eseguendo l'aggiornamento alla versione 1.1, il file 1.1.sql non verrà eseguito se nella versione 1.0 non era presente alcun file 1.0.sql. Per questo motivo, è buona norma disporre di un file di aggiornamento SQL per ogni versione, anche se non vi sono modifiche SQL in quella versione. Puoi semplicemente usare un file vuoto o un file con una riga di commento.

1
Craig