Project

General

Profile

Actions

Defect #14626

closed

Repositories' extra_info column is too short with MySQL

Added by Sergey Vasilyev over 10 years ago. Updated about 7 years ago.

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

0%

Estimated time:
Resolution:
Fixed
Affected version:

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

14626-change_repositories_extra_info_limit.diff (627 Bytes) 14626-change_repositories_extra_info_limit.diff patch: increase size limit to 16MB Go MAEDA, 2017-03-20 06:24

Related issues

Related to Redmine - Defect #20127: The description column in the issues table is too short (MySQL)ClosedJean-Philippe Lang

Actions
Actions #1

Updated by Toshi MARUYAMA over 10 years ago

  • Category changed from Database to SCM
Actions #2

Updated by Dan Mick over 8 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)

Actions #3

Updated by Toshi MARUYAMA over 8 years ago

Sergey Vasilyev wrote:

Changing the field type to LONGTEXT fixes the problem.

How to change on Rails?
http://railsdoc.com/migration

Actions #4

Updated by Toshi MARUYAMA over 8 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

Actions #5

Updated by Florian Gruber almost 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;

Actions #6

Updated by Go MAEDA about 7 years ago

  • Related to Defect #20127: The description column in the issues table is too short (MySQL) added
Actions #8

Updated by Go MAEDA about 7 years ago

  • Target version set to 3.4.0
Actions #9

Updated by Jean-Philippe Lang about 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.

Actions

Also available in: Atom PDF