找不到带有include的databaseChangeLog节点

时间:2015-11-06 09:43:55

标签: yaml liquibase

我正在尝试将 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格式,似乎是相同的。

2 个答案:

答案 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文件中的语法错误?