新しいチケットが作成できない。

2,994 views
Skip to first unread message

Mitsuya Tsujikawa

unread,
May 7, 2014, 8:54:42 PM5/7/14
to redmine-...@googlegroups.com
Redmineサーバーのリプレイスに伴い新規サーバーを構築しました。環境は以下のとおりです。
環境
OS: CentOS 6.5 x64
Redmine version 2.5.1.stable
Ruby version 2.0.0-p451 (2014-02-24) [x86_64-linux]
Rails version 3.2.17
Environment: production
Database adapter: Mysql2
SCM
Subversion 1.6.11
Redmine plugins:
redmine_scm 0.4.3
redmine_wiki_extensions 0.6.4

旧サーバーからMySQLのデータをエクスポート、インポートしました。

表題の通りで「新しいチケット」に必須事項を記入、[作成]を押すとInternal errorが出ます。

redmineのログは以下のとおりです。

Started POST "/redmine/projects/pv_monitor/issues" for 172.28.20.69 at 2014-05-08 09:42:50 +0900
Processing by IssuesController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"YNJ0qxjLxa50JayyRLSeDM2D7OjbQCc3/vSi9A725cU=", "issue"=>{"is_private"=>"0", "tracker_id"=>"4", "subject"=>"テスト", "description"=>"", "status_id"=>"1", "priority_id"=>"4", "assigned_to_id"=>"", "parent_issue_id"=>"", "start_date"=>"2014-05-08", "due_date"=>"", "estimated_hours"=>"", "done_ratio"=>"0", "custom_field_values"=>{"1"=>""}}, "commit"=>"作成", "project_id"=>"pv_monitor"}
  Current user: mtujikawa (id=35)
Completed 500 Internal Server Error in 78.9ms
NoMethodError (undefined method `parent_id_changed?' for #<Issue:0x007fa3e84c82c0>):
  app/models/issue.rb:165:in `create_or_update'
  app/controllers/issues_controller.rb:150:in `create'

新規プロジェクトの作成はできます。新規チケットの作成だけができません。
旧サーバーとのバージョン違いに起因したトラブルかとも思いましたが、旧サーバーでも同様のトラブルが起きており、チケットの作成ができない状態です。どうやらこれまでもチケットは利用しておらず、このトラブルに気がついていなかった模様です。

NoMethodError undefined method 'parent_id_changed?' issue.rb:165 issues_controller.rb:150
などのキーワードでgoogle先生に聞いてみましたが、的を得た答えを得られませんでした。

過去に利用した何かチケット関連のプラグインを使った後遺症のように推察していますが、それが何なのかわかりません。

どなたかご教授いただければ幸いです。

nobu_toyofuku

unread,
May 9, 2014, 4:25:05 AM5/9/14
to redmine-...@googlegroups.com

2014年5月8日木曜日 9時54分42秒 UTC+9 Mitsuya Tsujikawa:
表題の通りで「新しいチケット」に必須事項を記入、[作成]を押すとInternal errorが出ます。
  ...
NoMethodError (undefined method `parent_id_changed?' for #<Issue:0x007fa3e84c82c0>):

issuesテーブルから parent_idカラムがなくなってしまったなんてことはないと思いますが、
念のため確認してみます。

redmine のデータベースの issuesテーブルに parent_idカラムはありますか。
Mysql だと desc issues; ですか。
---

Mitsuya Tsujikawa

unread,
May 9, 2014, 7:01:36 PM5/9/14
to redmine-...@googlegroups.com
resありがとうございます。

確認してみたところ、新サーバー、移行元サーバ、共にredmine.issuesテーブルにparent_idというカラムはありませんでした。
http://www.redmine.org/issues/5907
を読むと他に"lft", "rgt"というカラムもあるそうですが、これもありませんでした。

その後わかったのですが、redmine.issuesテーブルにはデータが登録されているにもかかわらず、既存チケットの表示もInternal errorで表示できませんでした。

新サーバにredmineを構築後、一回redmine DBをdrop、旧サーバからのdumpを読み込ませたので、その際に欠落したのでは??とも考えましたが、旧サーバにも存在せず、欠損カラムがあることが問題のようです。

なぜ欠損カラムがあるのかは謎ですが、解決の鍵になりそうです。
再度redmineを再構築し、DBをdropせずに、データをtruncate、その後dumpを読み込ませてみます。

アドバイスありがとうございます。


2014年5月9日金曜日 17時25分05秒 UTC+9 nobu_toyofuku:

nobu_toyofuku

unread,
May 10, 2014, 7:45:53 AM5/10/14
to redmine-...@googlegroups.com

2014年5月10日土曜日 8時01分36秒 UTC+9 Mitsuya Tsujikawa:

確認してみたところ、新サーバー、移行元サーバ、共にredmine.issuesテーブルにparent_idというカラムはありませんでした。
http://www.redmine.org/issues/5907
を読むと他に"lft", "rgt"というカラムもあるそうですが、これもありませんでした。

そうでしたか。 parent_id, lft, rgt は redmine-0.9 から redmine-1.0(2010年7月リリース)に
上がったときに追加されたカラムです。
(db/migrate/20100313132032_add_issues_nested_sets_columns.rb に定義されている)
お使いのデータはバージョン0.9 以前の redmine で作られたデータだと思われます。

redmine のアップグレードの方法
http://redmine.jp/guide/RedmineUpgrade/
「Step 4 データベースの更新」に書かれている
rake db:migrate RAILS_ENV="production"
を行なわないと追加されたカラムは作られないのでこの手順が抜けていたのではないでしょうか。
---

Mitsuya Tsujikawa

unread,
May 12, 2014, 1:02:21 AM5/12/14
to redmine-...@googlegroups.com
redmine2.5.1で
rake db:migrate RAILS_ENV="production"
を行いましたが、不足カラムは追加されませんでした。

そこで、バックアップをとってからdbをdrop、再度新規作成、
RAILS_ENV=production bundle exec rake db:migrate
でテーブルを再作成してみました。

両者のテーブル構造のみを
# mysqldump -u xxxx -p -d > redmine.dump
で取り出し、diffしてみたところ、細々と違いが有りました。

Internal server errors after migrate from Trac
http://www.redmine.org/boards/2/topics/18087
Redmine を 0.9.6 から 1.0.2 にアップデートしたらチケットが見れない
http://www.ftnk.jp/~fumi/cl/2010-10-18-1.html
を参考に以下を実行し、手動にて不足カラムの追加、定義違いの変更をかけました。
mysql> use redmine;
mysql> ALTER TABLE issues ADD parent_id int(11) DEFAULT NULL;
mysql> ALTER TABLE issues ADD lft int(11) DEFAULT NULL;
mysql> UPDATE issues SET lft=1 WHERE lft IS NULL;
mysql> ALTER TABLE issues ADD rgt int(11) DEFAULT NULL;
mysql> UPDATE issues SET rgt=2 WHERE rgt IS NULL;
mysql> ALTER TABLE issues ADD root_id int(11) DEFAULT NULL;
mysql> ALTER TABLE issues ADD KEY `index_issues_on_root_id_and_lft_and_rgt` (`root_id`,`lft`,`rgt`);
mysql> ALTER TABLE changes CHANGE path path text NOT NULL;
mysql> ALTER TABLE changes CHANGE from_path from_path text;
mysql> ALTER TABLE users CHANGE `mail_notification` `mail_notification` varchar(255);
# cd /var/lib/redmine
# rake db:migrate RAILS_ENV=production
# rake redmine:plugins:migrate RAILS_ENV=production
# rake tmp:cache:clear
# rake tmp:sessions:clear
# service httpd restart
無事、新規チケットの発行や、既存チケットの閲覧ができるようになりました。
アドバイスどうもありがとうございました。

2014年5月10日土曜日 20時45分53秒 UTC+9 nobu_toyofuku:

nobu_toyofuku

unread,
May 12, 2014, 5:21:50 AM5/12/14
to redmine-...@googlegroups.com

2014年5月12日月曜日 14時02分21秒 UTC+9 Mitsuya Tsujikawa:
redmine2.5.1で
rake db:migrate RAILS_ENV="production"
を行いましたが、不足カラムは追加されませんでした。

うーん、そうですか。
schema_migrations というテーブルに migration をどこまでやったかが記録されていて
migrate/20100313132032_add_issues_nested_sets_columns.rb が必要なら実行される
はずなのですがそこらへんに不整合が起きていたのですかね。
 
Internal server errors after migrate from Trac
http://www.redmine.org/boards/2/topics/18087
Redmine を 0.9.6 から 1.0.2 にアップデートしたらチケットが見れない
http://www.ftnk.jp/~fumi/cl/2010-10-18-1.html
を参考に以下を実行し、手動にて不足カラムの追加、定義違いの変更をかけました。
  ...
無事、新規チケットの発行や、既存チケットの閲覧ができるようになりました。

動くようになってなによりです。
---
 
Reply all
Reply to author
Forward
0 new messages