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: Laurent Destailleur (eldy)
Subject: Re: [Dolibarr-dev] Problèmes à la mise à jour 2.2 -> 2.9
Date: Mon, 18 Oct 2010 21:36:15 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100922 Thunderbird/3.1.4



Le 18/10/2010 00:56, Yannick Warnier a écrit :
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();
Corrigé.
...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)?
Oui en très grande partie. Et c'était le but.
Mais il y aura encore des cas rares qui ne seront pas gérés.
Exemple avec le champ entity ajouté qui a été utilisé dans du code systeme partagé qui serait appelé dans les procédure de migration de vieilles versions. Il faudrait que le code de migration utilise son propre code et lib pour chaque version pour vraiment n'avoir aucun pb sur les vieilles versions. Ce qui déduplique le code et lib partagés autant de fois que de version et n'est pas intéressant.
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à).

Oui, tant que c'est de la correction, tu peux.
Tu fais partie des membres au grade Amiral, donc pas de problème.

http://wiki.dolibarr.org/index.php/Category:Admiral

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


_______________________________________________
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]