Forum: Ruby on Rails Disabling transactions

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
on 2007-06-19 03:15
(Received via mailing list)
I recently switched from MySQL to PostgreSQL.

It would appear that every time I save an ActiveRecord object rails
begins a database transaction before saving it, then commits after
inserting the data into the table. The problem with that is that I am
getting an this uninformative error:

ActiveRecord::StatementInvalid: PGError: ERROR:  current transaction
is aborted, commands ignored until end of transaction block
: INSERT INTO pictures (....

Which tells me nothing about why the INSERT actually failed.
Apparently other people have ran into this as well:

I'd like to either disable transactions (at least for the sake of
functional tests) or still be able to retrieve my error somehow. Any
advice on either would be much appreciated.
cammo (Guest)
on 2007-06-19 03:33
(Received via mailing list)
Which PGSQL adapter are you using? I use Postgres with Rails also, and
while it does wrap everything in a transaction I don't get the error
your getting. Personally I wouldn't be turning transactions off, and
the error is there for a reason.
Make sure your using the postgres-pr (0.4.0) gem.


On Jun 19, 9:13 am, "removed_email_address@domain.invalid" 
on 2007-06-19 04:14
(Received via mailing list)
I tried using the other adapters (postgres-pr, ruby-postgres), but the
same thing happens.

I should've mentioned that this is happening in my functional tests,
because I just discovered it's not happening in development mode.

I have use_transactional_fixtures set to false.
on 2007-06-19 04:39
(Received via mailing list)
Oops, nevermind. I am getting the error in development mode as well.

On Jun 18, 6:13 pm, "removed_email_address@domain.invalid" 
on 2007-06-19 04:44
(Received via mailing list)
I've also just found out that the INSERT statement works fine when I
paste it into psql.

On Jun 18, 6:38 pm, "removed_email_address@domain.invalid" 
on 2007-06-19 05:03
(Received via mailing list)
I found out what is causing it. There are exceptions being thrown in
my before_ and after_ callbacks for my model. Can rail re-throw the
exception it catches and display that error rather than the one I'm
getting now?

On Jun 18, 5:13 pm, "removed_email_address@domain.invalid" 
This topic is locked and can not be replied to.