概况
目前测试组需要从 禅道数据库中 捞取bug等相关数据,然后通过grafana展示出来。
那么最关键的一步当然就是编写sql了。
然而 sql是写完了,但是为啥在 mysql中能够执行,在grafana中执行不了?
说下我这边碰到的坑吧。
比如 这是一个 grafana中 的sql 格式如下:
select
date as time, @total := @total + countsum AS 新增总量
from
(select AAA.date,ifnull(sumc, 0 ) countsum from
(SELECT
DATE( DATE_ADD( FROM_UNIXTIME($__unixEpochFrom(),'%Y-%m-%d'), INTERVAL @s := @s + '1' DAY ) ) AS date
FROM
zt_bug,
( SELECT @s :=-1 ) temp
WHERE
@s < $date_interval
ORDER BY date) AAA left join
(select DATE_FORMAT(openedDate,'%Y-%m-%d') as date2, count(id) as sumc from zt_bug where project = $projectid and openedDate >0 group by 1) BBB
on AAA.date = BBB.date2 order by AAA.date) tmp, ( SELECT @total := 0 ) tab1;
可以看到 其中有些是 动态的变量。当然了,一个 panel中,肯定不止这一个sql, 你可能会写多个sql
这个时候你发现你单独跑一个 sql是可以执行,但是 多个合起来执行,就执行不了。 那么 如果你和我一样,大概可能 就是 变量 导致的了。
猜测 grafana 也是通过接口的方式来调用 mysql的,那么一个请求中如果 变量名称都相同,那可能变量会不会有冲突或者 取值就会乱掉。
修改
将 每个sql中的变量都 命名成不一样,再试试