mysql - Redmine 日历 View 无法正常工作

标签 mysql calendar redmine

我已经在 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.mail AS t4_r5, 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 FROM issues INNER JOIN issue_statuses ON issue_statuses.id = issues.status_id INNER JOIN projects ON projects.id = issues.project_id LEFT OUTER JOIN trackers ON trackers.id = issues.tracker_id LEFT OUTER JOIN users ON users.id = issues.assigned_to_id LEFT OUTER JOIN enumerations ON enumerations.id = issues.priority_id AND enumerations.type IN ('IssuePriority') LEFT OUTER JOIN sprints ON sprints.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/

相关文章:

linux - Redmine中的SVN URL如何修改?

MySQL 触发器没有像它应该的那样执行

PHP 未将提交的数据上传到数据库

python - Spark 中按年和月计算的日历化成本

C# 如何从 calendar.SelectedDate 中以 dd/MM/yyyy 格式获取日期

java - HOUR_OF_DAY 的范围是多少?

Java - 使用 hibernate 读取从 MYSQL 查询返回的列表

php - 数组中的重复区域

project-management - Assembla Redmine JIRA Zoho Yodiz 评论和/或替代品

mysql - 将 Redmine 自定义字段值获取到文件