감성지도/기반기술

천부경 2015. 3. 3. 17:41

[Redmine] Internal Error when viewing projects settings page (프로젝트 설정 페이지 클릭시 Internal Error)


조건

레드마인 2.6에서 cheditor 플러그인 문제로 레드마인 2.5로 갈아타느라

기존 2.6 데이터 백업 받아 2.5에 복원했다 (참조)

많은 우여곡절끝에 복원을 성공하여 레드마인 시스템을 가동하던 중

기존 또는 새로운 프로젝트의 설정 페이지를 들어가면 internal error가 발생 했다.

몇시간을 해맨끝에 역시나 에러는 log를 봐야한다는걸 다시금 깨달았다.


C:\Bitnami\redmine-2.5.2-2\apps\redmine\htdocs\log 에 보면

production 파일이 있다. 

이 파일을 열어보면 최근까지 레드마인 시스템에서 발생되는 이벤트들에 대한 로그가 적혀있다.

나는 마지막으로 '프로젝트 설정 페이지'에 접근을 시도했다. 아래 보는 거와 같이 에러가 발생.


ActionView::Template::Error (The single-table inheritance mechanism failed to locate the subclass: 'GroupNonMember'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Principal.inheritance_column to use another column for that information.):

    77:       </p>

    78:       <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>

    79:       <div id="principals_for_new_member">

    80:         <%= render_principals_for_new_members(@project) %>

    81:       </div>

    82:       <p>

    83:         <%= l(:label_role_plural) %>:

  app/helpers/members_helper.rb:25:in `render_principals_for_new_members'

  app/views/projects/settings/_members.html.erb:80:in `block in _app_views_projects_settings__members_html_erb___924551689_56775504'

  app/views/projects/settings/_members.html.erb:69:in `_app_views_projects_settings__members_html_erb___924551689_56775504'

  app/views/common/_tabs.html.erb:22:in `block in _app_views_common__tabs_html_erb__215710868_42239148'

  app/views/common/_tabs.html.erb:21:in `each'

  app/views/common/_tabs.html.erb:21:in `_app_views_common__tabs_html_erb__215710868_42239148'

  app/helpers/application_helper.rb:318:in `render_tabs'

  app/views/projects/settings.html.erb:3:in `_app_views_projects_settings_html_erb__903022040_42227916'


위 로그를 처음 접하고는 한참뒤에 이해가 가기 시작했다.

주요 볼 키워드는 table, column 'type'GroupNonMember 

왠지 DB와 관련된 문제인지 직감되지 않는가?


GroupNonMember 는 딱봐도 계정과 관련된 키워드이다.

그래서 레드마인 DB에 접근하여 users 테이블을 확인했다.


C:\Bitnami\redmine-2.5.2-2\mysql\bin>mysql -u bitnami -p

Enter password: **********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.5.39 MySQL Community Server (GPL)


Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> use bitnami_redmine; /* 레드마인 DB로 접근 */

Database changed

mysql> desc users; /* user table 의 컬럼정보 확인 */

+--------------------+--------------+------+-----+---------+----------------+

| Field              | Type         | Null | Key | Default | Extra          |

+--------------------+--------------+------+-----+---------+----------------+

| id                   | int(11)      | NO   | PRI | NULL    | auto_increment |

| login                | varchar(255) | NO   |     |         |                |

| hashed_password | varchar(40)  | NO   |     |         |                |

| firstname           | varchar(30)  | NO   |     |         |                |

| lastname           | varchar(255) | NO   |     |         |                |

| mail                | varchar(60)  | NO   |     |         |                |

| admin              | tinyint(1)   | NO   |     | 0       |                |

| status              | int(11)      | NO   |     | 1       |                |

| last_login_on      | datetime     | YES  |     | NULL    |                |

| language           | varchar(5)   | YES  |     |         |                |

| auth_source_id    | int(11)      | YES  | MUL | NULL    |                |

| created_on         | datetime     | YES  |     | NULL    |                |

| updated_on        | datetime     | YES  |     | NULL    |                |

| type                | varchar(255) | YES  | MUL | NULL    |                | /* type 컬럼이 있음 */

| identity_url         | varchar(255) | YES  |     | NULL    |                |

| mail_notification  | varchar(255) | NO   |     |         |                |

| salt                 | varchar(64)  | YES  |     | NULL    |                |

| must_change_passwd | tinyint(1)   | NO   |     | 0       |                |

| passwd_changed_on  | datetime     | YES  |     | NULL    |                |

+--------------------+--------------+------+-----+---------+----------------+

19 rows in set (0.03 sec)


users 테이블의 type과 login 컬럼 정보를 조회해본다.


mysql> select type, login from usres;

ERROR 1146 (42S02): Table 'bitnami_redmine.usres' doesn't exist

mysql> select type, login from users;

+----------------+------------+

| type           | login      |

+----------------+------------+

| User           | ycpark     |

| GroupAnonymous |            |

| AnonymousUser  |            |

GroupNonMember |           |

| User           | honest20   |

| User           | rladlstkd  |

| User           | didwogur   |

| User           | rlatjdehd  |

| User           | rlagus     |

| User           | rlarhkdtns |

| User           | rladydtjr  |

| User           | dbtlqhr    |

| User           | ansdudwns  |

| User           | yuzzzx     |

| User           | gcs1       |

| User           | gcs2       |

| User           | leejs      |

| User           | bhpark     |

| User           | htmsuh     |

+----------------+------------+

19 rows in set (0.00 sec)


있다. 로그에 나타났던 키워드가 있다. GroupNonMember 

그런데 이 type의 login 정보는 비어져 있다.

이놈과 나머지 놈들 (GroupAnonymous, AnonymousUser)을 삭제해봤다.


mysql> delete from users where type='GroupNonMember';

Query OK, 1 row affected (0.00 sec)

mysql> delete from users where type='GroupAnonymous';

Query OK, 1 row affected (0.00 sec)

mysql> delete from users where type='AnonymousUser ';

Query OK, 1 row affected (0.00 sec)


해당 레코드를 삭제하고

레드마인을 재시작했다.

'프로젝트 설정 페이지' 가 아주 잘 출력된다!.


끝.