Defect #14626
closedRepositories' extra_info column is too short with MySQL
0%
Description
In the database table repositories a field named "extra_info" has type "text", which in mysql is limited to 65535 chars. This breaks fetch_changesets command on repositories with a very large amount of branches (git). Actual reason is that is stores only part of the last commit hash or other line (like "!b" for "!binary"), and this causes errors in in fetch_changeset:
$ /usr/local/rvm/bin/redmine_rails runner "Repository.fetch_changesets" -e production /usr/local/rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands/runner.rb:53:in `eval': comparison of String with nil failed (ArgumentError) from /u01/apps/redmine-2.3.1/app/models/repository/git.rb:145:in `fetch_changesets' from /u01/apps/redmine-2.3.1/app/models/repository.rb:333:in `block (2 levels) in fetch_changesets' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/associations/collection_proxy.rb:89:in `each' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.13/lib/active_record/associations/collection_proxy.rb:89:in `method_missing' from /u01/apps/redmine-2.3.1/app/models/repository.rb:331:in `block in fetch_changesets' from /u01/apps/redmine-2.3.1/app/models/repository.rb:330:in `each' from /u01/apps/redmine-2.3.1/app/models/repository.rb:330:in `fetch_changesets' from (eval):1:in `<top (required)>' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands/runner.rb:53:in `eval' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands/runner.rb:53:in `<top (required)>' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:64:in `require' from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:64:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
Changing the field type to LONGTEXT fixes the problem.
Files
Related issues
Updated by Toshi MARUYAMA over 11 years ago
- Category changed from Database to SCM
Updated by Dan Mick about 9 years ago
Any plans to affect this?
In the meantime, not being a Rails programmer, can I change this in the database and expect the code to Just Work? (Edit: no, it'd at least take a migration and possible code change)
Updated by Toshi MARUYAMA about 9 years ago
Sergey Vasilyev wrote:
Changing the field type to LONGTEXT fixes the problem.
How to change on Rails?
http://railsdoc.com/migration
Updated by Toshi MARUYAMA about 9 years ago
Sergey Vasilyev wrote:
This breaks fetch_changesets command on repositories with a very large amount of branches (git).
I think you had better remove merged branches.
https://github.com/sparklemotion/nokogiri/issues/1336
Updated by Florian Gruber over 8 years ago
encountered the same problem, Redmine version 3.1.1.stable.14752
Processing by SysController#fetch_changesets as HTML Parameters: {"key"=>"*********************"} Mysql2::Error: Data too long for column 'extra_info' at row 1: UPDATE `repositories` SET `extra_info` = '---\nextra_report_last_commit: \'1\'\nheads:\n- !binar .... ... n' WHERE `repositories`.`id` = 50
anything else to do except ?
ALTER TABLE repositories MODIFY extra_info LONGTEXT;
Updated by Go MAEDA over 7 years ago
- Related to Defect #20127: The description column in the issues table is too short (MySQL) added
Updated by Go MAEDA over 7 years ago
- File 14626-change_repositories_extra_info_limit.diff 14626-change_repositories_extra_info_limit.diff added
Shouldn't we fix this issue along with #20127?
This is a patch to fix this: 14626-change_repositories_extra_info_limit.diff
Updated by Jean-Philippe Lang over 7 years ago
- Subject changed from repositories' extra_info is too short to Repositories' extra_info column is too short with MySQL
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Resolution set to Fixed
Committed, thanks.