Jump to content
Калькуляторы

perl DBI, DBD:Pq, prepate, execute не инсертитв талицу данные а такой же do инсертит

Есть примерно такой код на перле

#!/usr/bin/perl

use strict;
use warnings;

# use ...
use Data::Dumper;
use DBI;

our $dbh;       # remote psql data base hendler
our $sn = "DBI:Pg:dbname=test;host=192.168.0.5;port=5432;";
our $ins;

 $dbh = DBI->connect($sn, 'vasia', 'derparoll',{AutoCommit => 0,pg_server_prepare => 1});
 $ins = $dbh->prepare_cached("INSERT INTO mytable (username,starttime,stoptime,sessiontime,calledstationid,callingstationid,calldirection) VALUES (?,TO_TIMESTAMP(?),TO_TIMESTAMP(?),?,?,?,?)");

 my @res;
 push(@res,"test1");
 push(@res,"1");
 push(@res,"2");
 push(@res,"3");
 push(@res,"src1");
 push(@res,"dst1");
 push(@res,"IN");

 my $q = $ins->execute(@res);
 print ("ins->execute = $q\n");
 $q = $ins->finish();
 print ("ins->finish = $q\n");

 

$q оба раза при печати показывает "1", типа одна строка инсертится, но когда смотрю в базе, то новых строк не добавляется.

 

Если делать то же самое, но с использованием $dbh->do($insertstring) , то данные в таблицу вставляются. Почему так получается?

Share this post


Link to post
Share on other sites

Вoт так всегда ... чтобы найти ошибку в своём позорном коде. надо сперва этот код на форум выложить :-). AutoCommit => 0 -- т.е. надо либо AutoCommit => 1 юзать, либо после вызова метода execute() делать commit. Прочитал же мануал, вроде понял, но всёравно тупо с него скопипастил пример и не исправил, что за привычка так делать ? :-).

Edited by wtyd

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.