Je continue sur ma lancée de migration de 2.2.0 vers 2.9.0... Après avoir appliqué les modifs antérieures (courrier ci-dessous), je trouve encore deux problèmes. Le premier, c'est qu'il manque:
ALTER TABLE llx_document_model ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER nom; ...qui est normalement dans la migration de 2.6.0 vers 2.7.0. Je l'ai mis (en local) dans htdocs/install/mysql/migration/2.2.0-2.4.0.sql Ça générait un problème au moment de l'appel de htdocs/lib/functions2.lib.php::getListOfModels(), et du même coup on se rend compte que l'appel (ligne 1052 de functions2.lib.php) à $this->error est erroné puisque $this n'existe pas dans ce contexte (ce qui a pour conséquence globale que le bouton "next" n'apparaît pas mais qu'aucun message d'erreur n'explique pourquoi). J'ai donc remplacé: $this->error=$db->error(); par dol_print_error($db); $db->rollback(); ...ce qui semble être correct selon le reste du fichier. Ensuite entre 2.4.0 et 2.5.0, upgrade2.php m'indique Error #1 Unknown column 'fd.tva_tx' in 'field list' Est-ce que j'ai raison de penser qu'à partir de la 2.7.9 ce genre de danger est évité grâce à l'exécution sélective des fonctions (je vois ça à des conditions dans upgrade2.php)? Quoi qu'il en soit, je rajouter les queries de tva_taux -> tva_tx dans 2.4.0-2.5.0.sql: -- Uniformize code: change tva_taux to tva_tx ALTER TABLE llx_facturedet CHANGE tva_taux tva_tx real; ALTER TABLE llx_facture_fourn_det CHANGE tva_taux tva_tx double(6,3); ALTER TABLE llx_facturedet_rec CHANGE tva_taux tva_tx real DEFAULT 19.6; Puis j'ai un petit: PHP Notice: Undefined variable: err in /var/www/dolibarr/htdocs/install/upgrade2.php on line 1218 qui est vite réglé en déclarant $err = 0; au début de la fonction. Et sinon, tout le reste de l'upgrade fonctionne bien. J'ai vu que Laurent avait envoyé les changements précédents dans la branche 2.9 et dans trunk. Est-ce que je peux suivre la même méthode pour envoyer mes corrections? J'ai accès en CVS je pense (d'il y a très longtemps déjà). A+ Yannick Le dimanche 17 octobre 2010 à 09:19 -0500, Yannick Warnier a écrit : > Merci Eldy, > > Pour détailler un peu les modifs qui ont suivi... > > En fait, le champ llx_menu.enabled n'était ajouté que lors de la > migration de 2.4.0 vers 2.5.0. > > Le upgrade2.php étant commun à tous les niveaux de migration, > il a été mis à jour "post-2.4" pour utiliser ce champ enabled dans > upgrade2.php::migrate_menus() (qui sert à rejoindre llx_menu_constraint > et llx_menu), ce qui génère non seulement une erreur SQL, mais > possiblement aussi la perte de tous les menus. > > Il y avait donc deux solutions: > 1) modifier l'appel à migrate menus pour qu'il ne se fasse que lors > d'une migration spécifique > 2) modifier le code SQL de migration de la plupart des versions > antérieures pour s'assurer que le champ existe bien depuis n'importe > quelle version. > > C'est la seconde piste qui a été prise, notamment ici: > http://cvs.savannah.gnu.org/viewcvs/dolibarr/htdocs/install/mysql/migration/2.2.0-2.4.0.sql?cvsroot=dolibarr&r1=1.4&r2=1.5 > > Merci, > > Yannick > > > Le mercredi 06 octobre 2010 à 11:39 +0200, Laurent Destailleur (Eldy) a > écrit : > > Merci. > > > > Je vais essayer de corriger tout cela. > > Tu as par contre fait une mauvaise correction sur le champ enabled > > il faut faire > > alter table llx_menu add column enabled varchar(255) NULL default '1'; > > et non tinyint. > > > > > > Le 05/10/2010 07:17, Yannick Warnier a écrit : > > > Bonjour à tous, > > > > > > Je viens de faire une première tentative de migration de Dolibarr 2.2 > > > vers 2.9. > > > > > > À priori le résultat n'est pas trop mauvais, mais je rencontre quelques > > > problèmes. Je traduis directement de l'espagnol vers le français ici > > > pour simplifier, donc les messages d'erreur ne sont pas à prendre à la > > > lettre. > > > > > > J'utilise xdebug sur la machine, ce qui me donne directement un peu plus > > > de feedback. > > > > > > > > > Lors de 2.2 a 2.4, dans upgrade2.php: > > > > > > ------ > > > Migration des données des factures clients > > > Error #1 Unknown column 'fd.tva_tx' in 'field list' > > > > > > Mise à jour de la table des menus dynamiques > > > Xdebug: user triggered in /var/www/dolibarr/htdocs/lib/functions.lib.php > > > on line 1964 Call Stack: 0.0001 328884 1. > > > {main}() /var/www/dolibarr/htdocs/install/upgrade2.php:0 0.0907 1388696 > > > 2. migrate_menus() /var/www/dolibarr/htdocs/install/upgrade2.php:231 > > > 0.0916 1389116 3. > > > dol_print_error() /var/www/dolibarr/htdocs/install/upgrade2.php:2125 > > > 0.0951 1408248 4. > > > xdebug_print_function_stack() > > > /var/www/dolibarr/htdocs/lib/functions.lib.php:1964 Dolibarr a détecté > > > une erreur technique. > > > Voici des informations qui pourront vous aider au diagnostic: > > > Date: 20101004032641 > > > Dolibarr: 2.9.0 > > > PHP: 5.3.2-1ubuntu4.5 > > > Servidor: Apache/2.2.14 (Ubuntu) > > > > > > Url demandée: /install/upgrade2.php?versionfrom=2.2.0&versionto=2.4.0 > > > Referer: > > > http://[domaine]/install/upgrade.php?action=upgrade_2.4.0&selectlang=es_ES&versionfrom=2.2.0&versionto=2.4.0 > > > Gestionnaire de menu: > > > > > > Type de gestionnaire de base de données: mysql > > > Dernière requête erronée à la base de données: SELECT m.rowid, mc.action > > > FROM llx_menu_constraint as mc, llx_menu_const as md, llx_menu as m > > > WHERE md.fk_menu = m.rowid AND md.fk_constraint = mc.rowid AND m.enabled > > > = '1' > > > Message renvoyé: DB_ERROR_NOSUCHFIELD > > > Information sur la dernière erreur: Unknown column 'm.enabled' in 'where > > > clause' > > > > > > XDebug informations: > > > File: /var/www/dolibarr/htdocs/install/upgrade2.php > > > Line: 2125 > > > Function: migrate_menus > > > -------- > > > > > > Pour corriger ceci j'ai lancé la commande suivante dans la DB: alter > > > table llx_menu add enabled tinyint; > > > > > > J'ai aussi (à l'aveugle) transformé llx_facture_det.tva_taux en tva_tx. > > > Ça a eu l'air de fonctionner: alter table llx_facturedet change column > > > tva_taux tva_tx double default 21.00; > > > > > > > > > > > > Ensuite, etape5.php: > > > > > > --------- > > > Xdebug: user triggered in /var/www/dolibarr/htdocs/lib/functions.lib.php > > > on line 1964 Call Stack: 0.0017 335992 1. > > > {main}() /var/www/dolibarr/htdocs/install/etape5.php:0 0.0732 841564 2. > > > dol_print_error() /var/www/dolibarr/htdocs/install/etape5.php:242 0.0765 > > > 860832 3. > > > xdebug_print_function_stack() > > > /var/www/dolibarr/htdocs/lib/functions.lib.php:1964 Dolibarr ha detectado > > > un error técnico. > > > He aquí la información que podrá ayudar al diagnóstico: > > > Fecha: 20101004033303 > > > Dolibarr: 2.9.0 > > > PHP: 5.3.2-1ubuntu4.5 > > > Servidor: Apache/2.2.14 (Ubuntu) > > > > > > Url solicitada: /install/etape5.php?versionfrom=2.2.0&versionto=2.4.0 > > > Referer: > > > http://ywarnier.beeznest.net/install/upgrade2.php?versionfrom=2.2.0&versionto=2.4.0 > > > Gestor de menú: > > > > > > Tipo de gestor de base de datos: mysql > > > Petición último acceso a la base de datos erróneo: INSERT INTO > > > llx_const(name,value,type,visible,note,entity) > > > values('MAIN_VERSION_LAST_UPGRADE','2.4.0','chaine',0,'Dolibarr version > > > for last upgrade',0) > > > Código devuelto último acceso a la base de datos erróneo: > > > DB_ERROR_NOSUCHFIELD > > > Información sobre el último acceso a la base de datos erróneo: Unknown > > > column 'entity' in 'field list' > > > > > > Message: Error in setup program > > > XDebug informations: > > > File: /var/www/dolibarr/htdocs/install/etape5.php > > > Line: 242 > > > Function: {main} > > > ------- > > > > > > Pour ceci j'ai lancé: alter table llx_const add column entity int; > > > > > > 2.5 à 2.6: tout bon. > > > 2.6 à 2.7: tout bon. > > > 2.7 à 2.8: tout bon. > > > > > > > > > Par contre, lorsque l'installation semble terminée, je constate qu'aucun > > > module n'est actif (il faut les réactiver dans la page de configuration > > > -> modules), que je n'ai plus de date ni de détails de fondation de mon > > > entreprise. > > > En jetant un coup dans la table llx_dolibarr_module, je vois ceci (dans > > > l'ordre: numero, entity, active, active_date, version): > > > > > > ----- > > > 0 1 1 2008-01-07 02:29:10 1.19 > > > 1 1 1 2006-10-30 20:51:37 1.41 > > > 2 1 1 2006-06-11 04:20:56 1.26 > > > 10 1 1 2006-06-11 04:20:34 1.40 > > > 0 1 1 2006-06-11 04:20:50 1.47 > > > 23 1 1 2006-06-11 04:22:21 1.8 > > > 25 1 1 2006-06-11 04:20:55 1.37 > > > 30 1 1 2006-06-11 04:20:34 1.55 > > > 40 1 1 2006-10-30 20:51:36 1.43 > > > 50 1 1 2006-06-11 04:21:27 1.38 > > > 53 1 1 2006-06-11 04:21:27 1.27 > > > 70 1 1 2006-06-11 04:21:02 1.26 > > > 75 1 1 2006-06-11 04:21:05 1.8 > > > 85 1 1 2006-06-11 04:20:35 1.30 > > > 400 1 1 2006-06-11 04:21:34 1.21 > > > 500 1 1 2006-10-30 21:04:12 1.2 > > > ------- > > > > > > Un rapide coup d'oeil au code ne me permet pas de comprendre comment se > > > détermine si un module est installé ou pas. Du coup c'est un peu plus > > > compliqué pour comprendre l'erreur. Où est-ce qu'on voit ça (dans le > > > code et dans la DB)? > > > > > > Apparemment, durant la migration de 2.7 à 2.8, le champ tva_taux de > > > llx_facturedet est effectivement changé de nom pour tva_tx, mais dans ce > > > cas, ça me paraît suspect d'avoir déjà des messages d'erreur qui > > > apparaissent lors de la migration de 2.2 à 2.4. > > > > > > Yannick > > > > > > > > > > > > > > > _______________________________________________ > > > Dolibarr-dev mailing list > > > [email protected] > > > http://lists.nongnu.org/mailman/listinfo/dolibarr-dev > > > > > > _______________________________________________ > > Dolibarr-dev mailing list > > [email protected] > > http://lists.nongnu.org/mailman/listinfo/dolibarr-dev > > > _______________________________________________ > Dolibarr-dev mailing list > [email protected] > http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
_______________________________________________ Dolibarr-dev mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
