Skip to content
Valider 0a4dd8f1 rédigé par esj's avatar esj
Parcourir les fichiers

Nouvelle procédure de mise à jour.

D'une part, apparition d'un fichier {{{maj.log}}} utilisé exlusivement pour les opérations de mises à jour et sans limitation de taille, afin de disposer facilement de cette information complète à tout moment.

Ensuite, le fichier des mises à jour est à présent l'affectation d'un tableau '''maj''' (indexé par les parties entière et fractionnaire de '''spip_version''').

Chaque entrée est un tableau des opérations à faire en séquence.

Chaque opération est un tableau dont le premier est une fonction ('''sql_alter''' le plus souvent, mais aussi n'importe quelle fonction PHP) et les suivants ses arguments.

La boucle de mise à jour consiste à appliquer les fonctions des entrées strictement supérieures à '''version_installee''', et inférieures ou égales à '''spip_version'''). A chaque opération (pas seulement chaque numéro de mise à jour) une meta mémorise le point de sauvegarde, afin de pouvoir reprendre au bon endroit en cas de Time-out (autrement dit la fonction serie_alter est automatiquement appelée pour chaque mise à jour).

Un autre avantage de cette représentation est que si la mise à jour 1.N contient une erreur, découverte alors qu'on en est à la version 1.N+P, il est facile de neutraliser le code fautif pour les bases n'en ayant pas été victimes, et d'aiguiller vers un code spécifique pour les autres. Voir par exemple comment la 1.950 rattrape une telle situation.

En l'état, la mise à jour d'une base en 1.9.2 (1.926) vers la courante 1.957 produit les erreurs suivantes, dues à de mauvaises mises à jour dans la série (qui n'a pas changé en ce qui concerne la suite d'appels MySQL) pour lesquelles la facilité ci-dessus n'a pas encore été appliquée:

{{{
Oct 17 19:28:25 132.227.64.22 (pid 292) Unknown column 'maj' in 'spip_urls' - ALTER TABLE 
`spip192`.spip_urls CHANGE maj date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
Oct 17 19:28:25 132.227.64.22 (pid 292) Unknown column 'maj' in 'spip_urls' - ALTER TABLE 
`spip192`.spip_urls CHANGE `maj` date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL
Oct 17 19:28:25 132.227.64.22 (pid 292) Unknown column 'id_type' in 'spip_types_documents'
 - ALTER TABLE `spip192`.spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT 
NULL 
Oct 17 19:28:25 132.227.64.22 (pid 292) Can't DROP 'id_type'; check that column/key exists
 - ALTER TABLE `spip192`.spip_types_documents DROP `id_type`
Oct 17 19:28:25 132.227.64.22 (pid 292) Can't DROP 'extension'; check that column/key exis
ts - ALTER TABLE `spip192`.spip_types_documents DROP INDEX `extension`
}}}
parent bc99d5f9
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter