我已经在 Debian 7 机器上成功安装了 Redmine。环境是:
Environment:
Redmine version 2.5.1.stable
Ruby version 1.9.3-p194 (2012-04-20) [x86_64-linux]
Rails version 3.2.17
Environment production
Database adapter Mysql2
SCM:
Git 1.7.10.4
Filesystem
Redmine plugins:
scrum 0.5.0
问题是,当我单击“日历”选项卡时,出现以下错误:
500 An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator.
我查看了 Apache 日志,内容如下:
Query::StatementInvalid: Mysql2::Error: Column 'start_date' in where clause is ambiguous: SELECT
issues
.id
AS t0_r0,issues
.tracker_id
AS t0_r1,issues
.project_id
AS t0_r2,issues
.subject
AS t0_r3,issues
.description
AS t0_r4,issues
.due_date
AS t0_r5,issues
.category_id
AS t0_r6,issues
.status_id
AS t0_r7,issues
.assigned_to_id
AS t0_r8,issues
.priority_id
AS t0_r9,issues
.fixed_version_id
AS t0_r10,issues
.author_id
AS t0_r11,issues
.lock_version
AS t0_r12,issues
.created_on
AS t0_r13,issues
.updated_on
AS t0_r14,issues
.start_date
AS t0_r15,issues
.done_ratio
AS t0_r16,issues
.estimated_hours
AS t0_r17,issues
.parent_id
AS t0_r18,issues
.root_id
AS t0_r19,issues
.lft
AS t0_r20,issues
.rgt
AS t0_r21,issues
.is_private
AS t0_r22,issues
.closed_on
AS t0_r23,issues
.sprint_id
AS t0_r24,issues
.position
AS t0_r25,projects
.id
AS t1_r0,projects
.name
AS t1_r1,projects
.description
AS t1_r2,projects
.homepage
AS t1_r3,projects
.is_public
AS t1_r4,projects
.parent_id
AS t1_r5,projects
.created_on
AS t1_r6,projects
.updated_on
AS t1_r7,projects
.identifier
AS t1_r8,projects
.status
AS t1_r9,projects
.lft
AS t1_r10,projects
.rgt
AS t1_r11,projects
.inherit_members
AS t1_r12,projects
.product_backlog_id
AS t1_r13,issue_statuses
.id
AS t2_r0,issue_statuses
.name
AS t2_r1,issue_statuses
.is_closed
AS t2_r2,issue_statuses
.is_default
AS t2_r3,issue_statuses
.position
AS t2_r4,issue_statuses
.default_done_ratio
AS t2_r5,trackers
.id
AS t3_r0,trackers
.name
AS t3_r1,trackers
.is_in_chlog
AS t3_r2,trackers
.position
AS t3_r3,trackers
.is_in_roadmap
AS t3_r4,trackers
.fields_bits
AS t3_r5,users
.id
AS t4_r0,users
.login
AS t4_r1,users
.hashed_password
AS t4_r2,users
.firstname
AS t4_r3,users
.lastname
AS t4_r4,users
.users
.admin
AS t4_r6,users
.status
AS t4_r7,users
.last_login_on
AS t4_r8,users
.language
AS t4_r9,users
.auth_source_id
AS t4_r10,users
.created_on
AS t4_r11,users
.updated_on
AS t4_r12,users
.type
AS t4_r13,users
.identity_url
AS t4_r14,users
.mail_notification
AS t4_r15,users
.salt
AS t4_r16,users
.must_change_passwd
AS t4_r17,enumerations
.id
AS t5_r0,enumerations
.name
AS t5_r1,enumerations
.position
AS t5_r2,enumerations
.is_default
AS t5_r3,enumerations
.type
AS t5_r4,enumerations
.active
AS t5_r5,enumerations
.project_id
AS t5_r6,enumerations
.parent_id
AS t5_r7,enumerations
.position_name
AS t5_r8,sprints
.id
AS t6_r0,sprints
.name
AS t6_r1,sprints
.description
AS t6_r2,sprints
.start_date
AS t6_r3,sprints
.end_date
AS t6_r4,sprints
.user_id
AS t6_r5,sprints
.project_id
AS t6_r6,sprints
.created_on
AS t6_r7,sprints
.updated_on
AS t6_r8,sprints
.is_product_backlog
AS t6_r9 FROMissues
INNER JOINissue_statuses
ONissue_statuses
.id
=issues
.status_id
INNER JOINprojects
ONprojects
.id
=issues
.project_id
LEFT OUTER JOINtrackers
ONtrackers
.id
=issues
.tracker_id
LEFT OUTER JOINusers
ONusers
.id
=issues
.assigned_to_id
LEFT OUTER JOINenumerations
ONenumerations
.id
=issues
.priority_id
ANDenumerations
.type
IN ('IssuePriority') LEFT OUTER JOINsprints
ONsprints
.id
=issues
.sprint_id
WHERE (projects.status <> 9 AND projects.id IN (SELECT em.project_id FROM enabled_modules em WHERE em.name='issue_tracking')) AND ((issues.status_id IN (SELECT id FROM issue_statuses WHERE is_closed=0)) AND projects.id IN (1,2)) AND (((start_date BETWEEN '2014-03-30' AND '2014-05-03') OR (due_date BETWEEN '2014-03-30' AND '2014-05-03')))
有什么线索吗?
最佳答案
Mysql2::Error:where 子句中的列“start_date”不明确:
当您遇到此错误时,插件的列名与 redmine 列名相同。
例如:开始日期
插件列表
1.scrum 2.节假日
这两个插件具有相同的列名称 start_date。
所以一种解决方案是 1.转到calendars.controller并找到这一行
事件 += @query.issues(:include => [:tracker, :signed_to, :priority], :conditions => ["((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?))", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.结束] )
在此行中将 start_date 更改为 issues.start_date。
所以应该看起来像这样..
事件 += @query.issues(:include => [:tracker, :signed_to, :priority], :conditions => ["((issues.start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?))", @calendar.startdt, @calendar.enddt, @calendar.startdt, @日历.enddt] )
重启服务器......
关于mysql - Redmine 日历 View 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22967037/