Comportement étrange avec DBI [Perl ] - Perl - Programmation
Marsh Posté le 26-11-2014 à 14:33:02
C'est peut être un bug.
Par contre, le ; a la fin de ton statement SQL, c'est normal?
J'aurais pensé que
Code :
|
convenait.
A+,
Marsh Posté le 26-11-2014 à 15:21:52
Oui, on peut s'en passer.
Sinon, ça marche aussi en remplaçant le print par un simple :
Code :
|
Et ça ne fonctionne plus si je commente le qx...
Marsh Posté le 26-11-2014 à 16:15:48
Et si tu fais un
$dbh->do($sql) or die $dbh->errstr;
tu as un message d'erreur?
A+,
Marsh Posté le 26-11-2014 à 16:47:02
J'aurais pu le préciser, mais quel que soit le résultat (insertion ou non dans la table), la requête me retourne une valeur nulle mais vraie ('0E0'). Donc je n'ai pas de die.
J'ai fait un tracelog :
Code :
|
et j'obtiens la même trace dans les deux cas (à une réfence de hash près et un threadid près).
C'est incompréhensible...
Marsh Posté le 26-11-2014 à 17:42:12
J'ai fini par trouver, je pense, l'explication au phénomène : en fait, le fichier que je cherche à insérer étant petit, il n'est pas encore écrit sur le disque, mais juste stocké dans son buffer.
Donc lorsque je fais mon COPY, il prend un fichier... vide ! Donc il n'écrit logiquement rien dans la base !
Mais lorsque je fais appel à l'ordre 'qx', visiblement, ça entraine l'écriture du buffer dans le fichier, et donc l'insertion est alors correcte !
Et voilà !
Merci à gillou d'avoir pris le temps de se pencher sur mon problème.
Marsh Posté le 26-11-2014 à 17:44:16
J'ai néanmoins un autre problème du coup, puisque je ferme bien mes fichiers avant de (tenter de) les copier...
Je ne comprends pas pourquoi il ne sont pas écrit sur disque au moment du close...
édit : réponse : tout simplement parce que je ne les fermais pas correctement !
Problème résolu !
Marsh Posté le 27-11-2014 à 00:06:19
Ah! Donc c'était pas au niveau de DBI, mais au niveau de l'existence du fichier que tu passais en paramètres.
Sans plus d'infos contextuelle, je risquais pas de m'en douter.
Heureux de voir que c'est rentré dans l'ordre.
A+,
Marsh Posté le 26-11-2014 à 11:49:15
J'ai un comportement étrange avec le script (objet) ci-dessous qui utilise DBI (avec postrgres). Je cherche à insérer dans une table le contenu d'un fichier CSV :
Lorsque je commente le print, ma table reste vide, et lorsque je le décommente, l'insertion dans ma table se fait bien !
Je ne comprends absolument pas la raison de ce fonctionnement... Une idée ?
édit : version perl 5.10
Message édité par Titprem le 26-11-2014 à 12:29:05