如果通过 liquibase 存在于数据库中,如何删除事件?

How to drop event if exist in db through liquibase?

我在 spring 启动应用程序的 liquibase(changelog.xml) 文件中创建了一个 mysql 事件。当我更改事件主体中的某些逻辑时,如果它已经存在于数据库中,我想删除该事件。但是执行下面的 drop 语句会给我 mysql 语法错误。 我应该如何处理此事件更新?

<changeSet id="EVENT_ARCHIVE" author="jk" runOnChange="true">
                    <sql endDelimiter="|">
                        DROP EVENT IF EXISTS event_archive_rcs_message_log;
                        SET GLOBAL event_scheduler="ON";
                        |
                        CREATE EVENT IF NOT EXISTS event_archive
                        ON SCHEDULE EVERY 7 DAY 
                        STARTS CURRENT_TIMESTAMP 
                        DO
                          some queries...!
                        End |
                     </sql>

</changeSet>

您必须在所有脚本中使用指定的分隔符而不是默认的分隔符:

<changeSet id="EVENT_ARCHIVE" author="jk" runOnChange="true">
                    <sql endDelimiter="|">
                        DROP EVENT IF EXISTS event_archive_rcs_message_log |
                        SET GLOBAL event_scheduler="ON" |
                        CREATE EVENT IF NOT EXISTS event_archive
                        ON SCHEDULE EVERY 7 DAY 
                        STARTS CURRENT_TIMESTAMP 
                        DO
                          -- some queries with ';' as delimiter 
                        End |
                     </sql>

</changeSet>