Bonjour,
C\'est la fin d\'exercice, alors je met à jour phpcompta pour 2014. Les dossiers 2011 et 2013 sont passés nickels mais pas 2012 !
Je peut toujours consulter/modifier ce dossier depuis l\'ancien phpcompta (version 6.6.5330) mais pas depuis la mise à jour (version 6.7.1 5672).
Ci-dessous le code d\'erreur de la mise à jour :
[quote]Configuration
Info
Vous utilisez le domaine
PHP
magic_quotes_gpc:
magic_quotes_runtime:
module PGSQL
module BCMATH
module GETTEXT
module ZIP
php.ini est bien configuré
Base de données
string(6) \"9.1.11\"
Paramètre base de données
La base de données est bien configurée
Mise a jour du systeme
Mise à jour dossier
Patching 29 Restauration :dossier83.bin
Patching 29 Restauration :dossier83.bin from the version 107 to 108 begin;
-- si la fiche utilise le code DEPENSE PRIVEE alors ajout dans QP_DEP_PRIV
create or replace view m as
select qp_id, qp_price from quant_purchase join fiche_detail on (qp_fiche=f_id and ad_id=5) where ad_value in (select p_value from parm_code where p_code=\'DEP_PRIV\');
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=0 where qp_dep_priv is null;
-- évite les valeurs nulles dans quant_purchase
update quant_purchase set qp_dep_priv = 0 where qp_dep_priv is null;
drop view m;
-- update script insert_quant_purchase
CREATE OR REPLACE FUNCTION comptaproc.insert_quant_purchase(
found a function p_internal text,
p_j_id numeric,
p_fiche text,
p_quant numeric,
p_price numeric,
p_vat numeric,
p_vat_code integer,
p_nd_amount numeric,
p_nd_tva numeric,
p_nd_tva_recup numeric,
p_dep_priv numeric,
p_client text,
p_tva_sided numeric)
RETURNS void AS
$BODY$
declare
fid_client integer;
fid_good integer;
account_priv account_type;
fid_good_account account_type;
n_dep_priv numeric;
begin
n_dep_priv := 0;
select p_value into account_priv from parm_code where p_code=\'DEP_PRIV\';
select f_id into fid_client from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_client));
select f_id into fid_good from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_fiche));
select ad_value into fid_good_account from fiche_detail where ad_id=5 and f_id=fid_good;
if strpos( fid_good_account , account_priv ) = 1 then
n_dep_priv=p_price;
end if;
insert into quant_purchase
(qp_internal,
j_id,
qp_fiche,
qp_quantite,
qp_price,
qp_vat,
qp_vat_code,
qp_nd_amount,
qp_nd_tva,
qp_nd_tva_recup,
qp_supplier,
qp_dep_priv,
qp_vat_sided)
values
(p_internal,
p_j_id,
fid_good,
p_quant,
p_price,
p_vat,
p_vat_code,
p_nd_amount,
p_nd_tva,
p_nd_tva_recup,
fid_client,
n_dep_priv,
p_tva_sided);
return;
end;
$BODY$
LANGUAGE plpgsql;
-- ajout code manquant dans parm_code
create or replace function add_parm_code() returns void as
found a function$fct$
declare
country_code text;
begin
select pr_value into country_code from parameter where pr_id=\'MY_COUNTRY\';
if country_code=\'FR\' then
insert into parm_code (p_code,p_comment,p_value) values (\'DNA\',\'Dépense non déductible\',\'67\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DNA\',\'TVA non déductible\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DED_IMPOT\',\'TVA déductible à l\'\'impôt\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_COURANT\',\'Poste comptable pour le compte courant\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_TVA\',\'TVA à payer ou à recevoir\',\'\');
end if;
end;
$fct$
language plpgsql;
select add_parm_code();
drop function add_parm_code();
update parm_code set p_value=\'67\' where p_value=\'6740\' and p_code=\'DNA\';
alter table menu_ref add me_description_etendue text;
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'NAVI\',\'Navigateur\',null,null,\'Menu simplifié pour retrouver rapidement un menu\',null,\'ask_navigator()\',\'ME\',\'Le navigateur vous présente une liste de menu auquel vous avez accès et vous permet d\'\'accèder plus rapidement au menu que vous souhaitez rapidement\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'NAVI\',null,1,90,\'M\',0), (\'NAVI\',null,2,90,\'M\',0);
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'BOOKMARK\',\'Favori\',null,null,\'Raccourci vers vos menus préférés\',null,\'show_bookmark()\',\'ME\',\'Ce menu vous présente un menu rapide des menus que vous utilisez le plus souvent\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'BOOKMARK\',null,1,85,\'M\',0), (\'BOOKMARK\',null,2,85,\'M\',0);
update menu_ref set me_menu=\'Impression Journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_description=\'Impression des journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_menu=\'Liste Suivi\' where me_code=\'FOLLOW\';
update menu_ref set me_description=\'Document de suivi sous forme de liste\' where me_code=\'FOLLOW\';
update menu_ref set me_javascript=\'popup_recherche()\' where me_code=\'SEARCH\';
update menu_ref set me_file=null,me_javascript=\'set_preference()\' , me_description_etendue=\'Préférence de l\'\'utilisateur, apparence de l\'\'application pour l\'\'utilisateur, période par défaut et mot de passe\' where me_code=\'PREFERENCE\';
/*
* Vue montrant toutes les possibilités
*/
CREATE OR REPLACE VIEW v_menu_description AS
WITH t_menu AS (
SELECT mr.me_menu, pm.me_code, pm.me_code_dep, pm.p_type_display, pu.user_name, mr.me_file, mr.me_javascript, mr.me_description, mr.me_description_etendue
FROM profile_menu pm
JOIN profile_user pu ON pu.p_id = pm.p_id
JOIN profile p ON p.p_id = pm.p_id
JOIN menu_ref mr USING (me_code)
)
SELECT DISTINCT (COALESCE(v3.me_code || \'/\'::text, \'\'::text) || COALESCE(v2.me_code, \'\'::text)) ||
CASE
WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, \'\'::text)
WHEN v2.me_code IS NOT NULL THEN COALESCE(\'/\'::text || v1.me_code, \'\'::text)
ELSE NULL::text
END AS code, v1.me_code, v1.me_description, v1.me_description_etendue, v1.me_file, v1.user_name, \'> \'::text || v1.me_menu AS v1menu,
CASE
WHEN COALESCE(v3.me_menu, \'\'::text) \'\'::text THEN \' > \'::text || v2.me_menu
ELSE v2.me_menu
END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
coalesce(v1.me_javascript,coalesce(v2.me_javascript,v3.me_javascript)) as javascript
FROM t_menu v1
LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
WHERE v1.p_type_display \'P\'::text AND (COALESCE(v1.me_file, \'\'::text) \'\'::text OR COALESCE(v1.me_javascript, \'\'::text) \'\'::text);
COMMENT ON VIEW v_menu_description
IS \'Description des menus\';
CREATE TABLE bookmark
(
b_id serial primary key,
b_order integer default 1,
b_action text,
login text
);
comment on table bookmark is \'Bookmark of the connected user\';
create table tags (
t_id serial primary key,
t_tag text not null,
t_description text
);
create table action_tags
(
at_id serial primary key,
t_id integer references tags(t_id) on delete cascade on update cascade,
ag_id integer references action_gestion(ag_id) on delete cascade on update cascade
); [/quote]
Merci pour l\'aide !
mise à jour dossier impossible
Re:mise à jour dossier impossible
Bonjour,
L\'erreur n\'apparaît pas, on ne voit que les commandes, essayer de lancer tout le script via pgadmin3. On saura alors ce qui ne va pas. Ou alors vous mettre en mode DEBUG (voir Faq)
.D.
L\'erreur n\'apparaît pas, on ne voit que les commandes, essayer de lancer tout le script via pgadmin3. On saura alors ce qui ne va pas. Ou alors vous mettre en mode DEBUG (voir Faq)
.D.
Re:mise à jour dossier impossible
Bonjour Dany,
Voilà le code qui apparaît avec phpcompta en mode debug :
[quote]Patching SCOP CRAVIROLA 2012 from the version 107 to 108 begin;
-- si la fiche utilise le code DEPENSE PRIVEE alors ajout dans QP_DEP_PRIV
create or replace view m as
select qp_id, qp_price from quant_purchase join fiche_detail on (qp_fiche=f_id and ad_id=5) where ad_value in (select p_value from parm_code where p_code=\'DEP_PRIV\');
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=0 where qp_dep_priv is null;
-- évite les valeurs nulles dans quant_purchase
update quant_purchase set qp_dep_priv = 0 where qp_dep_priv is null;
drop view m;
-- update script insert_quant_purchase
CREATE OR REPLACE FUNCTION comptaproc.insert_quant_purchase(
found a function p_internal text,
p_j_id numeric,
p_fiche text,
p_quant numeric,
p_price numeric,
p_vat numeric,
p_vat_code integer,
p_nd_amount numeric,
p_nd_tva numeric,
p_nd_tva_recup numeric,
p_dep_priv numeric,
p_client text,
p_tva_sided numeric)
RETURNS void AS
$BODY$
declare
fid_client integer;
fid_good integer;
account_priv account_type;
fid_good_account account_type;
n_dep_priv numeric;
begin
n_dep_priv := 0;
select p_value into account_priv from parm_code where p_code=\'DEP_PRIV\';
select f_id into fid_client from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_client));
select f_id into fid_good from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_fiche));
select ad_value into fid_good_account from fiche_detail where ad_id=5 and f_id=fid_good;
if strpos( fid_good_account , account_priv ) = 1 then
n_dep_priv=p_price;
end if;
insert into quant_purchase
(qp_internal,
j_id,
qp_fiche,
qp_quantite,
qp_price,
qp_vat,
qp_vat_code,
qp_nd_amount,
qp_nd_tva,
qp_nd_tva_recup,
qp_supplier,
qp_dep_priv,
qp_vat_sided)
values
(p_internal,
p_j_id,
fid_good,
p_quant,
p_price,
p_vat,
p_vat_code,
p_nd_amount,
p_nd_tva,
p_nd_tva_recup,
fid_client,
n_dep_priv,
p_tva_sided);
return;
end;
$BODY$
LANGUAGE plpgsql;
-- ajout code manquant dans parm_code
create or replace function add_parm_code() returns void as
found a function$fct$
declare
country_code text;
begin
select pr_value into country_code from parameter where pr_id=\'MY_COUNTRY\';
if country_code=\'FR\' then
insert into parm_code (p_code,p_comment,p_value) values (\'DNA\',\'Dépense non déductible\',\'67\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DNA\',\'TVA non déductible\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DED_IMPOT\',\'TVA déductible à l\'\'impôt\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_COURANT\',\'Poste comptable pour le compte courant\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_TVA\',\'TVA à payer ou à recevoir\',\'\');
end if;
end;
$fct$
language plpgsql;
select add_parm_code();
drop function add_parm_code();
update parm_code set p_value=\'67\' where p_value=\'6740\' and p_code=\'DNA\';
alter table menu_ref add me_description_etendue text;
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'NAVI\',\'Navigateur\',null,null,\'Menu simplifié pour retrouver rapidement un menu\',null,\'ask_navigator()\',\'ME\',\'Le navigateur vous présente une liste de menu auquel vous avez accès et vous permet d\'\'accèder plus rapidement au menu que vous souhaitez rapidement\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'NAVI\',null,1,90,\'M\',0), (\'NAVI\',null,2,90,\'M\',0);
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'BOOKMARK\',\'Favori\',null,null,\'Raccourci vers vos menus préférés\',null,\'show_bookmark()\',\'ME\',\'Ce menu vous présente un menu rapide des menus que vous utilisez le plus souvent\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'BOOKMARK\',null,1,85,\'M\',0), (\'BOOKMARK\',null,2,85,\'M\',0);
update menu_ref set me_menu=\'Impression Journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_description=\'Impression des journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_menu=\'Liste Suivi\' where me_code=\'FOLLOW\';
update menu_ref set me_description=\'Document de suivi sous forme de liste\' where me_code=\'FOLLOW\';
update menu_ref set me_javascript=\'popup_recherche()\' where me_code=\'SEARCH\';
update menu_ref set me_file=null,me_javascript=\'set_preference()\' , me_description_etendue=\'Préférence de l\'\'utilisateur, apparence de l\'\'application pour l\'\'utilisateur, période par défaut et mot de passe\' where me_code=\'PREFERENCE\';
/*
* Vue montrant toutes les possibilités
*/
CREATE OR REPLACE VIEW v_menu_description AS
WITH t_menu AS (
SELECT mr.me_menu, pm.me_code, pm.me_code_dep, pm.p_type_display, pu.user_name, mr.me_file, mr.me_javascript, mr.me_description, mr.me_description_etendue
FROM profile_menu pm
JOIN profile_user pu ON pu.p_id = pm.p_id
JOIN profile p ON p.p_id = pm.p_id
JOIN menu_ref mr USING (me_code)
)
SELECT DISTINCT (COALESCE(v3.me_code || \'/\'::text, \'\'::text) || COALESCE(v2.me_code, \'\'::text)) ||
CASE
WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, \'\'::text)
WHEN v2.me_code IS NOT NULL THEN COALESCE(\'/\'::text || v1.me_code, \'\'::text)
ELSE NULL::text
END AS code, v1.me_code, v1.me_description, v1.me_description_etendue, v1.me_file, v1.user_name, \'> \'::text || v1.me_menu AS v1menu,
CASE
WHEN COALESCE(v3.me_menu, \'\'::text) \'\'::text THEN \' > \'::text || v2.me_menu
ELSE v2.me_menu
END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
coalesce(v1.me_javascript,coalesce(v2.me_javascript,v3.me_javascript)) as javascript
FROM t_menu v1
LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
WHERE v1.p_type_display \'P\'::text AND (COALESCE(v1.me_file, \'\'::text) \'\'::text OR COALESCE(v1.me_javascript, \'\'::text) \'\'::text);
COMMENT ON VIEW v_menu_description
IS \'Description des menus\';
CREATE TABLE bookmark
(
b_id serial primary key,
b_order integer default 1,
b_action text,
login text
);
comment on table bookmark is \'Bookmark of the connected user\';
create table tags (
t_id serial primary key,
t_tag text not null,
t_description text
);
create table action_tags
(
at_id serial primary key,
t_id integer references tags(t_id) on delete cascade on update cascade,
ag_id integer references action_gestion(ag_id) on delete cascade on update cascade
);
create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) SQL ERROR create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencéeArray#0 /var/www/phpcompta.2014-01-15/include/class_database.php(314): Database->exec_sql(\'?create table a...\') #1 /var/www/phpcompta.2014-01-15/include/class_database.php(400): Database->execute_script(\'sql/patch/upgra...\') #2 /var/www/phpcompta.2014-01-15/html/admin/setup.php(427): Database->apply_patch(\'SCOP CRAVIROLA ...\') #3 {main}ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencée
Fatal error: Uncaught exception \'Exception\' with message \' SQL ERROR create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencée\' in /var/www/phpcompta.2014-01-15/include/class_database.php:162 Stack trace: #0 /var/www/phpcompta.2014-01-15/include/class_database.php(314): Database->exec_sql(\'?create table a...\') #1 /var/www/phpcompta.2014-01-15/include/class_database.php(400): Database->execute_script(\'sql/patch/upgra...\') #2 /var/www/phpcompta.2014-01-15/html/admin/setup.php(427): Database->apply_patch(\'SCOP CRAVIROLA ...\') #3 {main} thrown in /var/www/phpcompta.2014-01-15/include/class_database.php on line 162[/quote]
Voilà le code qui apparaît avec phpcompta en mode debug :
[quote]Patching SCOP CRAVIROLA 2012 from the version 107 to 108 begin;
-- si la fiche utilise le code DEPENSE PRIVEE alors ajout dans QP_DEP_PRIV
create or replace view m as
select qp_id, qp_price from quant_purchase join fiche_detail on (qp_fiche=f_id and ad_id=5) where ad_value in (select p_value from parm_code where p_code=\'DEP_PRIV\');
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=(select qp_price from m where m.qp_id=e.qp_id);
update quant_purchase as e set qp_dep_priv=0 where qp_dep_priv is null;
-- évite les valeurs nulles dans quant_purchase
update quant_purchase set qp_dep_priv = 0 where qp_dep_priv is null;
drop view m;
-- update script insert_quant_purchase
CREATE OR REPLACE FUNCTION comptaproc.insert_quant_purchase(
found a function p_internal text,
p_j_id numeric,
p_fiche text,
p_quant numeric,
p_price numeric,
p_vat numeric,
p_vat_code integer,
p_nd_amount numeric,
p_nd_tva numeric,
p_nd_tva_recup numeric,
p_dep_priv numeric,
p_client text,
p_tva_sided numeric)
RETURNS void AS
$BODY$
declare
fid_client integer;
fid_good integer;
account_priv account_type;
fid_good_account account_type;
n_dep_priv numeric;
begin
n_dep_priv := 0;
select p_value into account_priv from parm_code where p_code=\'DEP_PRIV\';
select f_id into fid_client from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_client));
select f_id into fid_good from
fiche_detail where ad_id=23 and ad_value=upper(trim(p_fiche));
select ad_value into fid_good_account from fiche_detail where ad_id=5 and f_id=fid_good;
if strpos( fid_good_account , account_priv ) = 1 then
n_dep_priv=p_price;
end if;
insert into quant_purchase
(qp_internal,
j_id,
qp_fiche,
qp_quantite,
qp_price,
qp_vat,
qp_vat_code,
qp_nd_amount,
qp_nd_tva,
qp_nd_tva_recup,
qp_supplier,
qp_dep_priv,
qp_vat_sided)
values
(p_internal,
p_j_id,
fid_good,
p_quant,
p_price,
p_vat,
p_vat_code,
p_nd_amount,
p_nd_tva,
p_nd_tva_recup,
fid_client,
n_dep_priv,
p_tva_sided);
return;
end;
$BODY$
LANGUAGE plpgsql;
-- ajout code manquant dans parm_code
create or replace function add_parm_code() returns void as
found a function$fct$
declare
country_code text;
begin
select pr_value into country_code from parameter where pr_id=\'MY_COUNTRY\';
if country_code=\'FR\' then
insert into parm_code (p_code,p_comment,p_value) values (\'DNA\',\'Dépense non déductible\',\'67\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DNA\',\'TVA non déductible\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'TVA_DED_IMPOT\',\'TVA déductible à l\'\'impôt\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_COURANT\',\'Poste comptable pour le compte courant\',\'\');
insert into parm_code (p_code,p_comment,p_value) values (\'COMPTE_TVA\',\'TVA à payer ou à recevoir\',\'\');
end if;
end;
$fct$
language plpgsql;
select add_parm_code();
drop function add_parm_code();
update parm_code set p_value=\'67\' where p_value=\'6740\' and p_code=\'DNA\';
alter table menu_ref add me_description_etendue text;
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'NAVI\',\'Navigateur\',null,null,\'Menu simplifié pour retrouver rapidement un menu\',null,\'ask_navigator()\',\'ME\',\'Le navigateur vous présente une liste de menu auquel vous avez accès et vous permet d\'\'accèder plus rapidement au menu que vous souhaitez rapidement\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'NAVI\',null,1,90,\'M\',0), (\'NAVI\',null,2,90,\'M\',0);
insert into menu_ref(me_code,me_menu,me_file, me_url,me_description,me_parameter,me_javascript,me_type,me_description_etendue)
values
(\'BOOKMARK\',\'Favori\',null,null,\'Raccourci vers vos menus préférés\',null,\'show_bookmark()\',\'ME\',\'Ce menu vous présente un menu rapide des menus que vous utilisez le plus souvent\');
insert into profile_menu (me_code,me_code_dep,p_id,p_order, p_type_display,pm_default)
values
(\'BOOKMARK\',null,1,85,\'M\',0), (\'BOOKMARK\',null,2,85,\'M\',0);
update menu_ref set me_menu=\'Impression Journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_description=\'Impression des journaux\' where me_code=\'PRINTJRN\';
update menu_ref set me_menu=\'Liste Suivi\' where me_code=\'FOLLOW\';
update menu_ref set me_description=\'Document de suivi sous forme de liste\' where me_code=\'FOLLOW\';
update menu_ref set me_javascript=\'popup_recherche()\' where me_code=\'SEARCH\';
update menu_ref set me_file=null,me_javascript=\'set_preference()\' , me_description_etendue=\'Préférence de l\'\'utilisateur, apparence de l\'\'application pour l\'\'utilisateur, période par défaut et mot de passe\' where me_code=\'PREFERENCE\';
/*
* Vue montrant toutes les possibilités
*/
CREATE OR REPLACE VIEW v_menu_description AS
WITH t_menu AS (
SELECT mr.me_menu, pm.me_code, pm.me_code_dep, pm.p_type_display, pu.user_name, mr.me_file, mr.me_javascript, mr.me_description, mr.me_description_etendue
FROM profile_menu pm
JOIN profile_user pu ON pu.p_id = pm.p_id
JOIN profile p ON p.p_id = pm.p_id
JOIN menu_ref mr USING (me_code)
)
SELECT DISTINCT (COALESCE(v3.me_code || \'/\'::text, \'\'::text) || COALESCE(v2.me_code, \'\'::text)) ||
CASE
WHEN v2.me_code IS NULL THEN COALESCE(v1.me_code, \'\'::text)
WHEN v2.me_code IS NOT NULL THEN COALESCE(\'/\'::text || v1.me_code, \'\'::text)
ELSE NULL::text
END AS code, v1.me_code, v1.me_description, v1.me_description_etendue, v1.me_file, v1.user_name, \'> \'::text || v1.me_menu AS v1menu,
CASE
WHEN COALESCE(v3.me_menu, \'\'::text) \'\'::text THEN \' > \'::text || v2.me_menu
ELSE v2.me_menu
END AS v2menu, v3.me_menu AS v3menu, v3.p_type_display,
coalesce(v1.me_javascript,coalesce(v2.me_javascript,v3.me_javascript)) as javascript
FROM t_menu v1
LEFT JOIN t_menu v2 ON v1.me_code_dep = v2.me_code
LEFT JOIN t_menu v3 ON v2.me_code_dep = v3.me_code
WHERE v1.p_type_display \'P\'::text AND (COALESCE(v1.me_file, \'\'::text) \'\'::text OR COALESCE(v1.me_javascript, \'\'::text) \'\'::text);
COMMENT ON VIEW v_menu_description
IS \'Description des menus\';
CREATE TABLE bookmark
(
b_id serial primary key,
b_order integer default 1,
b_action text,
login text
);
comment on table bookmark is \'Bookmark of the connected user\';
create table tags (
t_id serial primary key,
t_tag text not null,
t_description text
);
create table action_tags
(
at_id serial primary key,
t_id integer references tags(t_id) on delete cascade on update cascade,
ag_id integer references action_gestion(ag_id) on delete cascade on update cascade
);
create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) SQL ERROR create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencéeArray#0 /var/www/phpcompta.2014-01-15/include/class_database.php(314): Database->exec_sql(\'?create table a...\') #1 /var/www/phpcompta.2014-01-15/include/class_database.php(400): Database->execute_script(\'sql/patch/upgra...\') #2 /var/www/phpcompta.2014-01-15/html/admin/setup.php(427): Database->apply_patch(\'SCOP CRAVIROLA ...\') #3 {main}ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencée
Fatal error: Uncaught exception \'Exception\' with message \' SQL ERROR create table action_tags ( at_id serial primary key, t_id integer references tags(t_id) on delete cascade on update cascade, ag_id integer references action_gestion(ag_id) on delete cascade on update cascade ) ERREUR: il n\'existe aucune contrainte unique correspondant aux clés données pour la table « action_gestion » référencée\' in /var/www/phpcompta.2014-01-15/include/class_database.php:162 Stack trace: #0 /var/www/phpcompta.2014-01-15/include/class_database.php(314): Database->exec_sql(\'?create table a...\') #1 /var/www/phpcompta.2014-01-15/include/class_database.php(400): Database->execute_script(\'sql/patch/upgra...\') #2 /var/www/phpcompta.2014-01-15/html/admin/setup.php(427): Database->apply_patch(\'SCOP CRAVIROLA ...\') #3 {main} thrown in /var/www/phpcompta.2014-01-15/include/class_database.php on line 162[/quote]
Re:mise à jour dossier impossible
Je vois le problème mais je ne comprends pas comment cela est arrivé : apparemment il manque un index unique sur la table action_gestion. Avez-vous changé qq chose ?
Il faut créér une clef primaire sur action_gestion, cela devrait fonctionner
D.
Il faut créér une clef primaire sur action_gestion, cela devrait fonctionner
D.
Re:mise à jour dossier impossible
En rajoutant l\'index unique sur la table en question, ça marche, merci et bravo !
J\'ai mis un peu de temps à réussir à le rajouter et à vérifier qu\'aucune donnée n\'était perdue.
Apparement tout va bien.
Je n\'avais jamais été traffiquer dans la base de donnée auparavant. Je ne sais pas quelle est la raison de cette disparition. Il est possible que ça provienne d\'une restauration incomplête. Il me reste notamment sur ce dossier la trace des factures générées mais pas les factures en odt. Mais ça c\'est de mon fait : j\'avais mal configuré le serveur apache/php.
Merci et à bientôt,
Vincent.
J\'ai mis un peu de temps à réussir à le rajouter et à vérifier qu\'aucune donnée n\'était perdue.
Apparement tout va bien.
Je n\'avais jamais été traffiquer dans la base de donnée auparavant. Je ne sais pas quelle est la raison de cette disparition. Il est possible que ça provienne d\'une restauration incomplête. Il me reste notamment sur ce dossier la trace des factures générées mais pas les factures en odt. Mais ça c\'est de mon fait : j\'avais mal configuré le serveur apache/php.
Merci et à bientôt,
Vincent.