@Okipniy

Redmine 3.4 Как исправить запрос, приводящий к ошибке 500, в списке задач проекта?

Ошибка заключается в следующем.
К задачам добавлены 3 настраиваемых поля
confbase - тип список
customer - Тип строка
issuein - Тип список

эти поля обязательны к заполнению.

При открытии списка задач по проекту и добавлении одного из этих полей в таблицу отображаемых redmine вылетает с 500 ошибкой.
В логах ругается на неверный запрос
Processing by IssuesController#index as HTML
  Parameters: {"utf8"=>"✓", "set_filter"=>"1", "sort"=>"id:desc", "f"=>[""], "c"=>["project", "tracker", "status", "priority", "done_ratio", "subject", "assigned_to", "created_on", "cf_1"], "group_by"=>"", "t"=>["estimated_hours", "spent_hours", ""]}
  Current user: admin (id=1)
Query::StatementInvalid: TinyTds::Error: Incorrect syntax near '.'.: EXEC sp_executesql N'SELECT custom_values.*, cv.cnt, cv.field_format FROM [custom_values] INNER JOIN
                                                (
                                                  SELECT cv.id
                                                         cv.cnt,
                                                         cv.field_format
                                                  FROM
                                                  (
                                                    SELECT cv.id,
                                                           cv_m.cnt,
                                                           cf.field_format,
                                                           case when cf.multiple = 1 and cf.acl_trim_multiple = 1 then 1 else 0 end as mlt,
                                                           ROW_NUMBER() OVER (PARTITION BY i.id, cv.custom_field_id, ORDER BY i.id, cv.custom_field_id, cv.id) as row_number
                                                    FROM custom_values cv
                                                         INNER JOIN custom_fields cf on cf.id = cv.custom_field_id
                                                         INNER JOIN issues i on i.id = cv.customized_id
                                                         INNER JOIN (SELECT COUNT(1) as cnt, cv.custom_field_id, cv.customized_id FROM custom_values cv WHERE cv.customized_type = ''Issue'' and cv.custom_field_id IN (1) and cv.customized_id IN (5093,5092,5091,5090,5089,5088,5087,5086,5085,5084,5083,5082,5081,5080,5079,5078,5077,5076,5075,5074,5073,5072,5071,4075,4074) GROUP BY cv.custom_field_id, cv.customized_id) cv_m on cv_m.custom_field_id = cf.id and cv_m.customized_id = i.id
                                                    WHERE cv.customized_type = ''Issue''
                                                      and cv.custom_field_id IN (1)
                                                      and i.id IN (5093,5092,5091,5090,5089,5088,5087,5086,5085,5084,5083,5082,5081,5080,5079,5078,5077,5076,5075,5074,5073,5072,5071,4075,4074)
                                                    ORDER BY i.id, cv.custom_field_id, cv.id
                                                  ) cv
                                                  WHERE cv.mlt = 0 OR cv.row_number <= 3
                                                ) cv on cv.id = custom_values.id  ORDER BY [custom_values].[customized_id] ASC, [custom_values].[custom_field_id] ASC, [custom_values].[id] ASC'
  Rendered common/error.html.erb within layouts/base (0.0ms)


Собственно сам вопрос - в каком файле формируется этот запрос

Параметры системы
ОС Windows Server 2016 Standart 64 bit
Environment:
  Redmine version                3.4.4.stable
  Ruby version                   2.3.3-p222 (2016-11-21) [i386-mingw32]
  Rails version                  4.2.8
  Environment                    production
  Database adapter               SQLServer
SCM:
  Git                            1.9.4
  Filesystem                     
Redmine plugins:
  a_common_libs                  2.4.0
  global_roles                   2.2.1
  redmine_checklists             3.1.10
  • Вопрос задан
  • 736 просмотров
Решения вопроса 1
@iPahan1988
О! Я как раз решил эту проблему!!!!!
Исправить нужно файле issue_query_patch.rb который находится по пути redmine-3.4.4/plugins/a_common_libs/lib/acl/patches/models.
У запроса
SELECT cv.id
                                                         cv.cnt,
                                                         cv.field_format
                                                  FROM
                                                  (
                                                    SELECT cv.id,
                                                           cv_m.cnt,
                                                           cf.field_format,
                                                           case when cf.multiple = 1 and cf.acl_trim_multiple = 1 then 1 else 0 end as mlt,
                                                           ROW_NUMBER() OVER (PARTITION BY i.id, cv.custom_field_id, ORDER BY i.id, cv.custom_field_id, cv.id) as row_number

Не хватает запятой у первого селекта там где SELECT cv.id
Так же стоит лишняя запятая в части там где
OVER (PARTITION BY i.id, cv.custom_field_id, ORDER BY i.id, cv.custom_field_id, cv.id)

перед ORDER BY не должно стоять запятой
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы