2012/06/07

geometryカラムに対するPerl DBIからのinsert

geometryカラム(ここでは,the_geom)に対して,
     my $geom = "st_setsrid(st_makepoint($lon,$lat),4326)";
     my $sth = $dbh->prepare("insert into events (the_geom) values (?)");
     $sth->execute($geom);
すると,


     DBD::Pg::st execute failed: ERROR:  parse error - invalid geometry
     HINT:  You must specify a valid OGC WKT geometry type such as POINT, LINESTRING or POLYGON
とか言われてしまう.


が,
     my $sth = $dbh->prepare("insert into events (the_geom) values ($geom)");

     $sth->execute();
として,executeの引数じゃなくしちゃえば動く...

そんな話なのか....


あ,でもこれじゃ引数変えて実行出来ないじゃん.


【訂正】lat lonの順序を逆に書いてました.正しくは,st_makepoint(経度,緯度)です.