Re: surprenant résultat : rollback sur update aprè s pg_dump
Nicky Larson <[email protected]> Thu, 12 Sep 2019 11:12:53 -0400
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <CAHtsRK+HB6WHorEWf3F0OLF8475AOKKNfUcaNDKD3w8QNkbJbg@mail.gmail.com> |
--00000000000081298f05925c94c3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable La commande suivante me parait bizarre car le nom de la base n'y est pas specifi=C3=A9e: su - $PROPRIO_ACTUEL -c 'psql ' < dump.sql On Mon, Sep 2, 2019 at 9:52 AM St=C3=A9phane Dunand <[email protected]> wro= te: > Le 29/08/2019 =C3=A0 09:36, Cloc a =C3=A9crit : > > Bonjour. > > > > En vue d'un travail sp=C3=A9cifique de d=C3=A9veloppement, j'ai besoin = de la copie > > d'une base interne. J'ai voulu d=C3=A9placer, upgrader et adapter cette= base > > via un script bash, sur CentOS. > > > > Initialement, la base est en version 9.3. Je la migre sur un serveur > > CentOS 7, en version 11. Pas de configuration particuli=C3=A8re. > > Un fichier pgpass est cr=C3=A9=C3=A9 au d=C3=A9but du script. > > > > Voici le script utilis=C3=A9 (tronqu=C3=A9 et avec des noms modifi=C3= =A9s) > > > > # pg_dump -h $PRODUCTION -U $USER_INITIAL --clean --create $MABASE > > > dump.sql > > # su - $PROPRIO_ACTUEL -c 'psql ' < dump.sql > > # REQUETE_PURGE=3D"update tableune set nom =3D '', groupes =3D null wh= ere > > id_externe =3D any (select distinct id from contrat where ladate < > > '2019-01-01'::date);" > > # echo $REQUETE_PURGE | psql -h 127.0.0.1 -U $PROPRIO_ACTUEL -w -d > $MABASE > > UPDATE 125834 > > > > Puis dans la foul=C3=A9e, au sein du script, je v=C3=A9rifie et affiche= le > > r=C3=A9sultat d'un select. Il est coh=C3=A9rent (le r=C3=A9sultat est = =C3=A9gal =C3=A0 0 si > > l'update est effectu=C3=A9) : > > # echo "select count (id) from tableune where id_externe =3D 25;" | psq= l > > -h 127.0.0.1 -U bddopserv -w -d archivage > > peut-=C3=AAtre ici : > -d $MABASE > > > Le script laisse tomber PostgreSQL et effectue diff=C3=A9rentes manipul= ations > > sur des fichiers puis quitte tranquillement. Le nouveau serveur de d=C3= =A9v > > est red=C3=A9marr=C3=A9. > > > > Tout semble bien s'=C3=AAtre pass=C3=A9. Pourtant, d=C3=A8s le premier = essai d'usage, > > je me rend compte que les requ=C3=AAtes de nettoyage ne semblent pas av= oir > > =C3=A9t=C3=A9 ex=C3=A9cut=C3=A9es, comme s'il y avait eu un rollback. U= ne fois ex=C3=A9cut=C3=A9es > > manuellement, tout rentre dans l'ordre. > > > > Qu'ai je omis de prendre en compte ? > > > > Claude > St=C3=A9phane D. > > > --00000000000081298f05925c94c3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div> La commande suivante me parait bizarre car le nom de= la base n'y est pas specifi=C3=A9e: <br></div><div><br></div><div>su -= $PROPRIO_ACTUEL -c 'psql ' < dump.sql</div></div><br><div class= =3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Sep 2, 2019 = at 9:52 AM St=C3=A9phane Dunand <<a href=3D"mailto:[email protected]">s.= [email protected]</a>> wrote:<br></div><blockquote class=3D"gmail_quote" s= tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad= ding-left:1ex">Le 29/08/2019 =C3=A0 09:36, Cloc a =C3=A9crit=C2=A0:<br> > Bonjour.<br> ><br> > En vue d'un travail sp=C3=A9cifique de d=C3=A9veloppement, j'a= i besoin de la copie<br> > d'une base interne. J'ai voulu d=C3=A9placer, upgrader et adap= ter cette base<br> > via un script bash, sur CentOS.<br> ><br> > Initialement, la base est en version 9.3. Je la migre sur un serveur<b= r> > CentOS 7, en version 11. Pas de configuration particuli=C3=A8re.<br> > Un fichier pgpass est cr=C3=A9=C3=A9 au d=C3=A9but du script.<br> ><br> > Voici le script utilis=C3=A9 (tronqu=C3=A9 et avec des noms modifi=C3= =A9s)<br> ><br> > # pg_dump -h $PRODUCTION -U $USER_INITIAL --clean --create $MABASE >= ;<br> > dump.sql<br> > # su - $PROPRIO_ACTUEL -c 'psql ' < dump.sql<br> > #=C2=A0 REQUETE_PURGE=3D"update tableune set nom =3D '', = groupes =3D null where<br> > id_externe =3D any (select distinct id from contrat where ladate <<= br> > '2019-01-01'::date);"<br> > # echo $REQUETE_PURGE | psql -h 127.0.0.1 -U $PROPRIO_ACTUEL -w -d $MA= BASE<br> > UPDATE 125834<br> ><br> > Puis dans la foul=C3=A9e, au sein du script, je v=C3=A9rifie et affich= e le<br> > r=C3=A9sultat d'un select.=C2=A0 Il est coh=C3=A9rent (le r=C3=A9s= ultat est =C3=A9gal =C3=A0 0 si<br> > l'update est effectu=C3=A9) :<br> > # echo "select count (id) from tableune where id_externe =3D 25;&= quot; | psql<br> > -h 127.0.0.1 -U bddopserv -w -d archivage<br> <br> peut-=C3=AAtre ici :<br> -d $MABASE<br> <br> > Le script laisse tomber PostgreSQL et effectue diff=C3=A9rentes manipu= lations<br> > sur des fichiers puis quitte tranquillement. Le nouveau serveur de d= =C3=A9v<br> > est red=C3=A9marr=C3=A9.<br> ><br> > Tout semble bien s'=C3=AAtre pass=C3=A9. Pourtant, d=C3=A8s le pre= mier essai d'usage,<br> > je me rend compte que les requ=C3=AAtes de nettoyage ne semblent pas a= voir<br> > =C3=A9t=C3=A9 ex=C3=A9cut=C3=A9es, comme s'il y avait eu un rollba= ck. Une fois ex=C3=A9cut=C3=A9es<br> > manuellement, tout rentre dans l'ordre.<br> ><br> > Qu'ai je omis de prendre en compte ?<br> ><br> > Claude<br> St=C3=A9phane D.<br> <br> <br> </blockquote></div> --00000000000081298f05925c94c3--