wtyd Posted March 18, 2016 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
wtyd Posted March 18, 2016 Author Posted March 18, 2016 (edited) Вoт так всегда ... чтобы найти ошибку в своём позорном коде. надо сперва этот код на форум выложить :-). AutoCommit => 0 -- т.е. надо либо AutoCommit => 1 юзать, либо после вызова метода execute() делать commit. Прочитал же мануал, вроде понял, но всёравно тупо с него скопипастил пример и не исправил, что за привычка так делать ? :-). Edited March 18, 2016 by wtyd Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.