dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] Problèmes à la mise à jour 2.2 -> 2.9


From: Yannick Warnier
Subject: Re: [Dolibarr-dev] Problèmes à la mise à jour 2.2 -> 2.9
Date: Sun, 17 Oct 2010 17:56:29 -0500

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
> > > address@hidden
> > > http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
> > 
> > 
> > _______________________________________________
> > Dolibarr-dev mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
> 
> 
> _______________________________________________
> Dolibarr-dev mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/dolibarr-dev




reply via email to

[Prev in Thread] Current Thread [Next in Thread]