wtyd Posted March 18, 2016 Есть примерно такой код на перле #!/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) , то данные в таблицу вставляются. Почему так получается? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted March 18, 2016 (edited) Вoт так всегда ... чтобы найти ошибку в своём позорном коде. надо сперва этот код на форум выложить :-). AutoCommit => 0 -- т.е. надо либо AutoCommit => 1 юзать, либо после вызова метода execute() делать commit. Прочитал же мануал, вроде понял, но всёравно тупо с него скопипастил пример и не исправил, что за привычка так делать ? :-). Edited March 18, 2016 by wtyd Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...