Project

General

Profile

Actions

Defect #134

closed

Exception when deleting a tracker in Admin area

Added by Alex Mikalev over 16 years ago. Updated over 16 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Affected version:

Description

Attempted to delete a tracker, got this:

ActiveRecord::StatementInvalid (Mysql::Error: #23000Column 'position' cannot be
null: UPDATE trackers SET `position` = NULL, `is_in_chlog` = 0, `is_in_roadmap` = 0, `name` = 'Support' WHERE `id` = 3):
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/connect
ion_adapters/abstract_adapter.rb:128:in `log'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/connect
ion_adapters/mysql_adapter.rb:243:in `execute'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/connect
ion_adapters/mysql_adapter.rb:258:in `update'
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/base.rb

Actions #1

Updated by Jean-Philippe Lang over 16 years ago

I can't reproduce with the latest code.
Can you please post the full error stack and tell which
version/revision of Redmine you're using ?

Actions #2

Updated by Alex Mikalev over 16 years ago

I have just updated to rev. 860. Here is the full stack trace:

Processing TrackersController#index (for 192.168.1.46 at
2007-10-22 12:40:20) [GET]
Session ID: 1b884b314062cd6bc88538cdf0e936c1
Parameters: {"action"=>"index",
"controller"=>"trackers"}
DEPRECATION WARNING: paginate is deprecated and will be
removed from Rails 2.0 (Pagination is moving to a plugin in
Rails 2.0: script/plugin install
svn://errtheblog.com/svn/plugins/classic_pagination) See
http://www.rubyonrails.org/deprecation for details. (called
from list at
c:/redmine/app/controllers/trackers_controller.rb:31)
Rendering layoutfalseactionlist within layouts/base
Rendering trackers/list
Completed in 0.21800 (4 reqs/sec) | Rendering: 0.07700 (35%) | DB: 0.11000 (50%) | 200 OK [http://biosvr101/trackers]

Processing TrackersController#destroy (for 192.168.1.46 at
2007-10-22 12:40:36) [POST]
Session ID: 1b884b314062cd6bc88538cdf0e936c1
Parameters: {"action"=>"destroy",
"id"=>"3",
"controller"=>"trackers"}

ActiveRecord::StatementInvalid (Mysql::Error: #23000Column
'position' cannot be null: UPDATE trackers SET `position` =
NULL, `is_in_chlog` = 0, `is_in_roadmap` = 0, `name` =
'Support' WHERE `id` = 3):

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/connection_adapters/abstract_adapter.rb:128:in
`log'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/connection_adapters/mysql_adapter.rb:243:in
`execute'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/connection_adapters/mysql_adapter.rb:258:in
`update'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/base.rb:1799:in
`update_without_lock'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/locking/optimistic.rb:60:in
`update_without_callbacks'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:267:in
`update_without_timestamps'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/timestamp.rb:39:in
`update'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/base.rb:1792:in
`create_or_update_without_callbacks'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:242:in
`create_or_update'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/base.rb:1548:in
`save_without_validation'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/validations.rb:752:in
`save_without_transactions'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:129:in
`save'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/connection_adapters/abstract/database_statements.rb:59:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:95:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:121:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:129:in
`save'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/validations.rb:773:in
`update_attribute'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/acts/list.rb:126:in
`remove_from_list'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:333:in
`send'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:333:in
`callback'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:330:in
`each'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:330:in
`callback'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/callbacks.rb:320:in
`destroy_without_transactions'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:125:in
`destroy'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/connection_adapters/abstract/database_statements.rb:59:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:95:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:121:in
`transaction'

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_rec
ord/transactions.rb:125:in
`destroy'
c:/redmine/app/controllers/trackers_controller.rb:78:in
`destroy'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/base.rb:1101:in
`send'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/base.rb:1101:in
`perform_action_without_filters'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/filters.rb:696:in
`call_filters'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/filters.rb:688:in
`perform_action_without_benchmark'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/benchmarking.rb:66:in
`perform_action_without_rescue'
c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/benchmarking.rb:66:in
`perform_action_without_rescue'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/rescue.rb:83:in
`perform_action'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/base.rb:435:in
`send'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/base.rb:435:in
`process_without_filters'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/filters.rb:684:in
`process_without_session_management_support'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/session_management.rb:114:in
`process'

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_contr
oller/base.rb:334:in
`process'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/dispatcher.rb:41:i
n
`dispatch'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:
113:in
`handle_dispatch'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:
79:in
`service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/webrick_server.rb:
63:in
`dispatch'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/servers/w
ebrick.rb:59

c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'

c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_sup
port/dependencies.rb:495:in
`require'

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_sup
port/dependencies.rb:342:in
`new_constants_in'

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_sup
port/dependencies.rb:495:in
`require'

c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/commands/server.rb
:39

c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'

c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
c:/redmine/script/server:3

Actions #3

Updated by Jean-Philippe Lang over 16 years ago

Still can't reproduce even with Rails 1.2.5 like yours.
And what happens when you try to reorder your trackers ?

Actions #4

Updated by Alex Mikalev over 16 years ago

Reordering trackers works fine... Is there any information I
could supply you with for further debugging?

It attempts to set position field to NULL, what is the
correct value that is expected instead of null for a deleted
tracker?

Actions #5

Updated by Jean-Philippe Lang over 16 years ago

The update statement should reorder the trackers (it doesn't
apply to the deleted tracker). Your log says it's trying to update
tracker with id 3, which is not the one you're trying to delete
I suppose. This update statement is generated by acts_as_list.
I would really like to see the content of your trackers table.
Maybe there's something wrong is the current position field content
in your db.
Could you post the result of: select * from trackers ?

Actions #6

Updated by Alex Mikalev over 16 years ago

There you go:

id,name,is_in_chlog,position,is_in_roadmap
1,Issue,true,1,false
2,Feature,true,2,true
3,Support,false,5,false
4,Enhancement,true,3,false
5,Task,true,4,true

Actions #7

Updated by Jean-Philippe Lang over 16 years ago

One more thing, which one are you trying to delete ?

Actions #8

Updated by Alex Mikalev over 16 years ago

The "Support" one, ID=3. Thanks for any suggestions.

Actions #9

Updated by Jean-Philippe Lang over 16 years ago

I've tested with the same exact configuration as yours.
No error. In the log, I have:

the deletion: DELETE FROM trackers WHERE `id` = 3
followed by the reordering: UPDATE trackers SET position = (position
- 1) WHERE (1 = 1 AND position > 5)

Are you using the official 1.2.5 Rails release ? Have you made
any change to Redmine ?

Actions #10

Updated by Alex Mikalev over 16 years ago

Yep, using official release, did not change Redmine except
entries in configuration files. (I am a Java guy, newbie to
Ruby e al, would not have guts to mess with it :) ).

Can this be something on the db side (different MySql
engines or settings) ? I guess not...

Would you recommend I re-install Ruby, RoR, Redmine from
scratch or something else?

Actions #11

Updated by Jean-Philippe Lang over 16 years ago

Oh, in fact I have the same update statement as yours in the
log, before the deletion. But mysql don't raise any error, it
simply set the field to 0.

Are you running mysql in strict mode ?

Actions #12

Updated by Jean-Philippe Lang over 16 years ago

As acts_as_list assumes that the position field can be set to
null, I'll remove the 'not null' constraint in the db.

Actions #13

Updated by Jean-Philippe Lang over 16 years ago

Could you upgrade to r860 and migrate.
This problem should be fixed.

Actions #14

Updated by Alex Mikalev over 16 years ago

"SELECT @@global.sql_mode" gives me
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION.
So I guess yes, strict mode.

I'll update with your latest changes and let you know if the
problem persists. Thanks!

Actions #15

Updated by Alex Mikalev over 16 years ago

That fixed it. Thanks a lot!

Actions

Also available in: Atom PDF