libpqxx と準備済みステートメントを使用しています。プログラムで挿入しようとすると、「無効なジオメトリ」というエラーで失敗しますが、SQL プロンプトから同じ挿入を行うことができます。準備ステートメント呼び出しで ' をエスケープしようとしましたが、同じエラーが発生しました
con.prepare("chat_insert", "INSERT INTO chat values (nextval('chat_seq'), $1, ST_GeomFromText('POINT($2 $3)', 4326), $4)");
worker.prepared("chat_insert")(chatid)(lon)(lat)(msg).exec();
worker.commit();
私も試しました
con.prepare("chat_insert", "INSERT INTO chat values (nextval('chat_seq'), $1, ST_GeomFromText(\'POINT($2 $3)\', 4326), $4)");
出力:
Chat id: chat:user:128946234
Lat: 14.6049
Lon: 121.033
ERROR: parse error - invalid geometry
HINT: "POINT(" <-- parse error at position 6 within geometry
SQLプロンプトに入ると、これを実行でき、挿入されます
insert into chat values (nextval('chat_seq'), 'chat:user:128946234', ST_GeomFromText('POINT(121.033 14.6049)', 4326), 'This is a test msg....');