Vous n'êtes pas identifié(e).

#226 Re : C et C++ » C vs C++ » 08/08/2011 18:29:06

j'ai appelé la fonction PQescapeByteaConn :

mais il trouve encore le moyen de m'embeter :

probleme de result errorcode : ERROR:  syntax error at or near "\"
LINE 1: ...) = (1999422,A\\265(U\\2...
                                    ^

#227 Re : C et C++ » C vs C++ » 08/08/2011 17:56:02

est-ce-que elle existe uniquement dans la version 9 de postgre

#228 Re : C et C++ » C vs C++ » 08/08/2011 17:37:11

cette fonction n'est pas du connu de mon postgres :
Ci-dessous le message de mon compilateur g++ :
PQescapeLiteral was not declared in this scope

#229 Re : C et C++ » C vs C++ » 08/08/2011 17:10:03

je suis tomber sur ça

char *PQescapeLiteral(PGconn *conn, const char *str, size_t length);


est-ce-que vous l'avez déjà utilisé ?

Est-ce-que dans mon cas, où j'ai un chaine de caractère constituée de plusieurs INSERT et UPDATE (separés par des ";") ça peut être utile avant le PQsendQuery.

#230 Re : C et C++ » C vs C++ » 08/08/2011 16:48:44

ESt ce que vous avez quelque code sur un curseur binaire

#231 Re : C et C++ » C vs C++ » 08/08/2011 16:42:23

Est-ce-que quelqu'un a déjà utilisé un curseur binaire ?

Quand on envoi les données sur le serveur, comment on fait pour les remettres en format texte.
Quand j'affiche les donnée du cursseur binaire avec un cout je n'ai rien du tout.
Comment faire pour les afficher.

#232 Re : C et C++ » C vs C++ » 08/08/2011 13:25:45

Alors,

j'insère une valeur dans un champ de ty bytea :

INSERT INTO table(champ) VALUES (E'\001\223\001\000\000\002p\001\000\000d\031\276\227\202\017n\232%\247\300O\025\300\372V\302\305+FF \244g\255S\317\251HX\230\263\352,\347~\217:s\207\324g\005\241\331\265\257\201\025\376\331V\3660\330\307G\012\264n\354\253&6\212\341\2644\200\271d[9\250\364\316\023\317\313\011#\236v\3369\274\316\211\257n\273\177\337U@\315#\362j\220|\277\376\3226\353\300\2019\307\3552<\024U\357\273\330SK-#P\364\307\266nZ\200\236\331\273\313\230;\012t\005\207+\025N\037\257\367\216\311\323\252$\345\243^F6\371e&\337|0Y\023\205\321)'@\355){\313\2355\250P\317\242v\317\335\312\256\244\202\347\305\342\307\006B\275\177\202M\020\013\257{V\030\021\236\332\365(\260\355I\360\265D\005\341p\251?\243,\2344p\264\247\206\206\306:\333\366\007[\315\220\303\244g\325\255\371\377\230U\352\260m\241\244\236\212\3449\274(\343!\014\226\267\350\214\350\005J\275\012\374\362\253\356\0020\313I\315\342\2713\345d\356xy\342E\273*\376^\226\326\372\276\225\326\327\3132x{/\2533$\273\357\341v\023\334Z\317\351\274\262\201\341\374\267h^!\307Y\225\346\333[H\211\360J\370\223a\207 \222T\256\235s0p\004'\350\225\216<w\330\277TM[\3233\304U\372&+\374J4\330g\003\004\000\000\000\000\000\000\000\004\020\000\000\0)00U\373+d\321\355\\\371\327\310E\022Lk\226\263')

Mais j'a toujours la même chose :


ERROR:  invalid byte sequence for encoding "UTF8": 0x93
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".


Désolé, je sais que c'es moche, mais je voulais vous montrer que je mettais bien une donnée binaire dans un champs bytea.

Cordialement

#233 Re : C et C++ » C vs C++ » 08/08/2011 09:57:50

Merci, je vous donnerai des nouvelles de mes avancements.

#234 Re : C et C++ » C vs C++ » 05/08/2011 19:56:46

Voilà ce qu'il me met quand je mets des cotes à un bytea :


WARNING:  nonstandard use of escape in a string literal
LINE 1: ...','01','A  001710','00','4','0','','000000001100','\000 \000...
                                                             ^
HINT:  Use the escape string syntax for escapes, e.g., E'\r\n'.
WARNING:  nonstandard use of escape in a string literal
LINE 1: ...,'','','0','2011-04-01 09:21:25',0,'','7','0','0','\001c\000...
                                                             ^
HINT:  Use the escape string syntax for escapes, e.g., E'\r\n'.
1
probleme de result errorcode : ERROR:  invalid byte sequence for encoding "UTF8": 0x00
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".


Si non est ce que vous pouvez m'expliquer comment on parametre le TCP keepalive.

#235 Re : C et C++ » C vs C++ » 05/08/2011 16:44:15

désolé

pour la dernière ligne lire Comme et pas commait, je commence à être fatigué.

#236 Re : C et C++ » C vs C++ » 05/08/2011 16:37:00

La realité c'est que la connexion n'est pas coupé, c'est un problème avec le firewall, alors il faut que j'envoie des requetes vides .
S'il y a pas de reponse je couperai la connexion.

!!!!!!!!!!!!!!!!!!!

Par contre la j'ai vraiment un problème qui risque de faire capoter mon projet.

Un peu plus haut j'ai dit que j'allais uiliser les curseur binaire, mais on m'a demander de les laissere tomber, car c'est compliqué de convertir le binaire en d'autre format et surtout psql ne peux lire les donnée en binaire (et moi je peux pas les afficher avec cout << pgetvalue).
Alors je me suis retrouvé au problème que j'ai signalé auparavant :



j'ouvre un curseur avec FETCH ALL,  ensuite j'appelle PQsendQuery sur plusieurs instructions ( que des insert), le problème est que pour certaines données il a besoin que je mette mes données entre cotes  '  '.
Comment je pourrais faire pour éviter de mettre beaucoup d'instructions if, qui me permettent de savoir quelle donnée doit être entouré de cote.

J'ai pensé à cette fonction PQsendQueryParams, mais le problème est que j'ai plusieurs insert et plusieurs update dans ma commande que j'envoie au serveur.

int PQsendQueryParams(PGconn *conn,
                      const char *command,
                      int nParams,
                      const Oid *paramTypes,
                      const char * const *paramValues,
                      const int *paramLengths,
                      const int *paramFormats,
                      int resultFormat);


Commait j'ai plusieurs insert et update, je ne sais pas comment mettre les valeurs de mes parametres dans paramValues.

#238 Re : C et C++ » C vs C++ » 03/08/2011 12:17:42

Merci, j'ai bien avancé et mon projet est entrain de finir.
Seulement, j'ai un problème :
Après la connexion aux serveurs A et B, quand j'envoie (de A vers B) une commande avec des inserts, rien n'arrive à B et la connexion n'est pas coupé, dès fois on peut mettre 48 h pour s'en rendre compte.

Je sais que la solution est dans le timeout de statement, mais je ne sais comment le faire techniquement.
Mais le problème est surtout  que j'ai peur qu'il arrete le traitement si mes requetes depasse en temps d'execution le timeout.

#239 Re : C et C++ » C vs C++ » 29/07/2011 17:12:48

Désolé c'est encore moi, j'ai redefinis mon cursueur en curseur binaire, et le problème a été résolu, sauf que j'ai une nouvelle erreure


ERROR:  invalid byte sequence for encoding "UTF8": 0xb5
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

ce qui veux dire que le serveur ne connait pas le format d'une de mes données, comment je pourrais faire pour lui signifier qu'il doit reconnaitre le format de mes données.

Merci
Cordialement

#240 Re : C et C++ » C vs C++ » 29/07/2011 16:34:02

Bonjour,

j'ouvre un curseur avec FETCH ALL,  ensuite j'appelle PQsendQuery sur plusieurs instructions ( que des insert), le problème est que pour certaines données il a besoin que je mette mes données entre cotes  ''.
Comment je pourrais faire pour éviter de mettre beaucoup d'instructions if, qui me permettent de savoir quelle donnée doit être entouré de cote.

J'ai pensé à cette fonction PQsendQueryParams, mais le problème est que j'ai plusieurs insert dans ma commande que j'envoie au serveur.

#241 Re : C et C++ » C vs C++ » 21/07/2011 17:29:37

Hello,

dans mon programme j'ai quelques chose du genre insert itn table(a,b,c,d) values ($1,$2,$3,$4);
Sachant que j'ai pas de fonction, je ne vois pas ce que pourrait etre ces variables avec les dolars.

#242 Re : C et C++ » C vs C++ » 21/07/2011 11:44:06

Pour la connexion j'ai trouvé le problème.
Mais concernant le TIMEOUT, j'aimerai couper la connexion quand au bout de 30 secondes,  il y a plus de paquets envoyés entre les deux serveurs.

#243 Re : C et C++ » C vs C++ » 20/07/2011 16:12:06

Merci, je commence à voir un peu mieu.
Sinon j'ai d'autres questions :

Dans mon programme j'ai une fonction qui me connecte à la base, je lui donne le nom du service et ça marche car elle trouve le fichier conf machin...

Mais quand je fais deux appels successifs à cette fonction (pour me connecter à deux bases differentes), elle ne me connecte qu'à la première base.
Je ne comprends pas.

Dernière question: comment pourrais je gerer les timeout.

Merci et désolé pour les spams

#244 Re : C et C++ » C vs C++ » 20/07/2011 09:35:32

Ce que je veux dire, c'est que s'il y a une interruption ou un problème quelconque avec mon fichier, comment je vais garantir que je ne perds pas des donnée.

#245 Re : C et C++ » C vs C++ » 19/07/2011 17:01:52

Merci gleu,

comment je vais etre sur qu'en faisant un COPY je ne perds de lignes.

#246 Re : C et C++ » C vs C++ » 18/07/2011 11:32:21

Si j'ai bien compris, pour utiliser COPY :

il faut copier de la table A dans un fichier F, en suite, de ce fichier F, je copie dans la table B sur l'autre serveur.
COPY FROM TableA  TO fichierF

COPY FROM fichierF TO TableB.

Est-ce-que tu as un lien vers un bout de code dans lequel COPY est utilisé avec libpq.

#247 Re : C et C++ » C vs C++ » 18/07/2011 10:08:09

Bonjour,

merci pour les reponses.
Ici, nous travaillons en mode autocommit.
Quand je dis une transaction, c'est pour parler d'une ligne d'une table.
Ici "replication" c'est copier les données d'un serveur à un autre, je reafirme que c'est pas une vrai replication.
En fait, on copie les lignes d'une table d'un serveur à une autre table d'un autre serveur.
Sauf qu'on transfere les lignes une à une.
Ce que moi je veux faire, c'est au lieu de copier les lignes une à une, j'aimerai les copier par bloc.
Comme ça je gagne du temps

PS: je me suis trompé PgQ n'est pas utilisé ici.
Ici on utilise un batch  en C (libpq) pour ramener les donnée d'un serveur à un autre.

#248 Re : C et C++ » C vs C++ » 13/07/2011 15:10:03

Est ce que je peux faire un Copy d'une table vers une autre sans passer par un fichier?

#249 Re : C et C++ » C vs C++ » 13/07/2011 11:58:15

PgQ est utilisé déjà, mais il veulent que j'améliore les perf.
On utilise un curseur dans le C pour copier les transactions une à une, ça fait beaucoup.
Ce qu'il veulent c'est écrire par bloc en mode assynchrone (c'est à dire ne pas attendre l'ACK avant d'envoyer le bloc suivant).
J'aimerai déjà voir sur un exemple (copy)  comment faire pour copier un bloc d'un serveur à un autre.
En suite gerer des timeout en cas de perte de connexion.

Désolé mais je n'arrive pas encore à bien apprehender le sujet.

Merci de votre aide

#250 Re : C et C++ » C vs C++ » 12/07/2011 13:38:39

Car je penses que le copy, c'est plus entre table et fichier system.

Pied de page des forums

Propulsé par FluxBB