- warn "no $serviceid for $srv_date $srv_time; adding\n"
- if $DEBUG;
- $found++;
-
- for my $dir ('_IN', '_OUT') {
-
- my $sin = join(',', map dbh->quote("$_$dir"), @serviceids);
-
- my $sum = "
- SELECT COALESCE(SUM(value),0) FROM srvexport AS other
- WHERE other.serviceid IN ($sin)
- AND ABS( $cur - $other_date ) <= 60
- ";
-
- my $isql = "
- INSERT INTO srvexport ( srv_date, srv_time, serviceid, value, intvl )
- VALUES ( ?, ?, ?, ($sum), ? )
- ";
- my @param = ( time2str('%Y-%m-%d', $cur), #srv_date
- time2str('%X', $cur), #srv_time
- "$serviceid$dir",
- 300, #intvl ...
- );
- warn $isql. ' with param '. join(',',@param). "\n"
- if $DEBUG > 2;
-
- my $isth = dbh->prepare($isql) or die $DBI::errstr; #better recovery?
-
- #stupid mysql deadlocks all the time on insert, so we need to recover
- unless ( $isth->execute(@param) ) {
- #warn "Error inserting data for $serviceid$dir (restarting): ".
- # $isth->errstr;
- warn "Error inserting data for $serviceid$dir: ". $isth->errstr;
- dbh->rollback; #or die dbh->errstr;
- #sleep 5;
- #next SERVICEID; #MAIN;
- exit;
- }
-