Ruby on Rails Thursday, April 28, 2011

On 28 Apr 2011, at 13:13, Owain <owain.mcguire@gmail.com> wrote:

> On Apr 28, 12:57 pm, Frederick Cheung <frederick.che...@gmail.com>
> wrote:
>
>>> mysql> insert into confirmations (quote_id) values(188);
>>> Query OK, 1 row affected (0.01 sec)
>>
>>> mysql> select * from confirmations where quote_id = 188;
>>
>> Why are you filtering by quote_id here?
>>
>
> Fred,
>
> Just to show that the mysql CLI client allowed me to manually add
> another row with the same quote_id of 188. So it is not mysql server
> that is reporting the Duplicate Entry/Statement invalid. It is being
> reported by the mysql adapter of ActiveRecord.
>
On closer inspection it may be that the duplicate entry error is coming from the primary key (your insert was explicitly setting the id to 185)

Fred


> Here is more of the backtrace which I omitted earlier.
>
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/abstract_adapter.rb:227:in `log'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/mysql_adapter.rb:324:in `execute'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/abstract/database_statements.rb:259:in
> `insert_sql'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/mysql_adapter.rb:334:in `insert_sql'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/abstract/database_statements.rb:44:in
> `insert_without_query_dirty'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/abstract/query_cache.rb:19:in `insert'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> base.rb:2961:in `create_without_timestamps'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> timestamp.rb:53:in `create_without_callbacks'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> callbacks.rb:266:in `create'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> base.rb:2927:in `create_or_update_without_callbacks'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> callbacks.rb:250:in `create_or_update'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> base.rb:2577:in `save_without_validation'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> validations.rb:1090:in `save_without_dirty'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> dirty.rb:79:in `save_without_transactions'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:229:in `send'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:229:in `with_transaction_returning_status'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> connection_adapters/abstract/database_statements.rb:136:in
> `transaction'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:182:in `transaction'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:228:in `with_transaction_returning_status'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:196:in `save'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:208:in `rollback_active_record_state!'
> /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.10/lib/active_record/
> transactions.rb:196:in `save'
> [RAILS_ROOT]/app/controllers/confirmation_controller.rb:17:in
> `create'
>
>
> The thing is that the SQL being reported looks completely correct and
> should not fail.
>
> Any ideas?
>
> O.
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
>

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment