Re: surprenant résultat : rollback sur update aprè s pg_dump
Tumasgiu Rossini <[email protected]> Fri, 13 Sep 2019 09:51:51 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <CAJD9AWwfWq8ZaeO4+BHXmF2E14P89-vMugg=46Md3eVeJNYA_w@mail.gmail.com> |
--000000000000a91f4a05926a87bc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le jeu. 12 sept. 2019 =C3=A0 17:13, Nicky Larson <[email protected]> = a =C3=A9crit : > 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 > > Le dump est cr=C3=A9=C3=A9 avec l'option --create, il contient donc les com= mandes de cr=C3=A9ation de la base, utiliser psql sans sp=C3=A9cifier la base est valide, cf. https://www.postgresql.org/docs/current/app-pgdump.html > On Mon, Sep 2, 2019 at 9:52 AM St=C3=A9phane Dunand <[email protected]> w= rote: > >> 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 cett= e 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 w= here >> > 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 affich= e 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;" | ps= ql >> > -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 manipu= lations >> > 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 a= voir >> > =C3=A9t=C3=A9 ex=C3=A9cut=C3=A9es, comme s'il y avait eu un rollback. = Une 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. >> >> >> --000000000000a91f4a05926a87bc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-size:large"><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"lt= r" class=3D"gmail_attr">Le=C2=A0jeu. 12 sept. 2019 =C3=A0=C2=A017:13, Nicky= Larson <<a href=3D"mailto:[email protected]">said.assemlal@gmail.= com</a>> a =C3=A9crit=C2=A0:<br></div><blockquote class=3D"gmail_quote" = style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa= dding-left:1ex"><div dir=3D"ltr"><div> La commande suivante me parait bizar= re car le nom de la base n'y est pas specifi=C3=A9e: <br></div><div>=C2= =A0</div></div></blockquote><blockquote class=3D"gmail_quote" style=3D"marg= in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e= x"><div dir=3D"ltr"><div></div><div>su - $PROPRIO_ACTUEL -c 'psql '= < dump.sql</div></div><br></blockquote><div><br></div><div><div style= =3D"font-size:large" class=3D"gmail_default">Le dump est cr=C3=A9=C3=A9 ave= c l'option --create, il contient donc les commandes de cr=C3=A9ation de= la base, utiliser psql sans sp=C3=A9cifier la base</div><div style=3D"font= -size:large" class=3D"gmail_default">est valide, cf. <a href=3D"https://www= .postgresql.org/docs/current/app-pgdump.html">https://www.postgresql.org/do= cs/current/app-pgdump.html</a></div><br></div><div>=C2=A0</div><blockquote = class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol= id rgb(204,204,204);padding-left:1ex"><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]" target=3D"_blank">s.dunand@= sirap.fr</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D= "margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft: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> </blockquote></div></div> --000000000000a91f4a05926a87bc--