我正在尝试将 changeset.yaml 文件包含在Liquidbase的 changelog.yaml 中。
档案changelog.yaml
<html>
<head>
<title></title>
</head>
<body>
<table>
<tbody>
<?php
$counter = 1;
/* Some rudimentary filtering at the very least, better use prepared statements or PDO */
$course = addslashes( filter_input( INPUT_GET,'course',FILTER_SANITIZE_STRING ) );
/* I think you can combine the two sql queries and have only 1 loop */
$data = "select *,
( select sum( `studatt_endtime` - `studatt_starttime` ) from `studentattendance` ) as 'sum'
from `student` s
inner join `studentattendance` a on s.`stud_matric`=a.`student_stud_matric`
inner join `course` c on c.`course_code`=a.`course_course_code`
where a.`course_course_code` like '%".$course."%'
group by a.`student_stud_matric`;";
/* Query the db - do not reveal too much information if there is a problem */
$result = $conn->query( $data ) or die ("Error: Something went wrong...");
if( $result ){
/* Loop through recordset */
while( $ser=$result->fetch_object() ) {
/* Do your calculations */
$a = $ser->course_contacthour;
$b = "14";
$tch = ( $a * 2 ) * $b;
$tot=number_format( $ser->sum / $tch * 100, 2);
/* write the output */
echo '
<tr>
<td>
<center>'.$counter.'</center>
</td>
<td>'.$ser->stud_matric.'</td>
<td>'.$ser->stud_name.'</td>
<td>'.$tot.'</td>
</tr>';
$counter++;
}
}
@mysqli_free_result( $result );
?>
</tbody>
</table>
</body>
</html>
changeset.yaml
databaseChangeLog:
- include:
file: migrations/changeset.yaml
执行更新时获取此信息
changeset:
id: 1
author: vlad
任何想法为什么?感谢。
更新: 如果我使用xml格式,似乎是相同的。
答案 0 :(得分:9)
changeset.yaml必须包含databaseChangeLog 所以在我的情况下我应该有这个:
<强> changeset.yaml 强>
databaseChangeLog:
- changeset:
id: 1
author: vlad
文档并没有多大帮助。找到答案here in github
答案 1 :(得分:0)
就我而言,我已经正确地声明了该节点,但事实证明,我忘记在YML文件中为其创建包含-(space)include和-changeset的空间,其中include应该是-(space)include和-changeset 。另外,我的YML文件之一的拼写是databaseChangelog,应该具有大写字母L,应为databaseChangeLog。毕竟那些语法错误的类型,错误都消失了。
顺便说一句,有谁知道一个很好的插件来检查Liquibase / YML文件中的语法错误?