Я использую DBI Perl для доступа 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 (из-за forking) в двух процессах. Ты? – ikegami
Не уверен, я использую Mojolicious :: Lite и Hypnotoad. Вероятно, это вилка. Я мог бы попробовать снова подключиться, чтобы гарантировать, что dbh не используется ... –
Да, я думаю, что так оно и есть. В качестве быстрого теста я снова подключился к каждому запросу, и проблема не появляется. Теперь я могу внести правильное решение. Спасибо! –