On 1/11/07 1:39 PM, Jonathan Vanasco wrote:
> if  i change a table columns definition during testing, I'll get
> these errors:
> 
> DBD::Pg::st execute failed: ERROR:  prepared statement "dbdpg_17"
> does not exist

I  believe this is a DBI/DBD::Pg/libpg issue/reality/"feature" :)  If you
use DBI's prepare_cache() method and you change the db schema between calls,
the previously-cached version of the cached statement will become invalid.
I think that's what you're seeing.

RDBO uses DBI's prepare_cached() method internally by default.  This
behavior can be controlled per-class using the dbi_prepare_cached() method
on the metadata object:

http://search.cpan.org/dist/Rose-DB-Object/lib/Rose/DB/Object/Metadata.pm#db
i_prepare_cached

You can also control it per-call in most object and Manager methods using
the prepare_cached parameter.  Example:

http://search.cpan.org/dist/Rose-DB-Object/lib/Rose/DB/Object.pm#load

So you can either not use prepare_cached() at all, or turn it off when the
schema changes, and then perhaps back on again afterwards.  Overriding
dbi_prepare_cached() in a custom metadata class and making it "smart" is one
way to do this without worrying about explicit prepare_cached => ...
parameters to every call.

-John



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Rose-db-object mailing list
Rose-db-object@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rose-db-object

Reply via email to