我使用Perl的DBI進行PostgreSQL訪問,並且我注意到當我有多個併發進程準備相同的查詢時,它們似乎最終在服務器上有相同的預備語句名稱,造成衝突。perl DBI和預備的語句名稱衝突
2014-02-10 10:04:11.802650500 DBD::Pg::st execute failed: ERROR: prepared statement "dbdpg_p20307_185" already exists at /usr/sbin/mslrest.pl line 207.
2014-02-10 10:04:11.804659500 [Mon Feb 10 10:04:11 2014] [error] DBD::Pg::st execute failed: ERROR: prepared statement "dbdpg_p20307_185" already exists at /usr/sbin/mslrest.pl line 207.
有沒有辦法傳遞準備好的語句的名稱,以便我可以隨機化並避免這種衝突?
我不知道這是否可能是由於在兩個進程中使用相同dbh(由於分叉)的副本造成的。你是? – ikegami
不確定,我正在使用Mojolicious :: Lite和Hypnotoad。它可能會分叉。我可以嘗試重新連接,以確保dbh不共享... –
是的,我認爲就是這樣。作爲快速測試,我重新連接了每個請求,並且不會出現問題。現在我可以採取適當的解決方案。謝謝! –