如果通过 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>
我在 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>