Solución:
Creo que necesitas agregar el endDelimiter
cláusula en la etiqueta Liquibase, basada en la documentación que se encuentra aquí
A continuación se muestra un ejemplo
<changeSet author="newbie" id="function_rad2deg" dbms="mysql,h2">
<sqlFile encoding="utf8"
path="sql/function_rad2deg.sql"
relativeToChangelogFile="true"
splitStatements="false"
stripComments="false"
endDelimiter="nGO"
/>
</changeSet>
Su archivo SQL con el delimitador anterior se vería así
DROP FUNCTION IF EXISTS rad2deg;
GO
CREATE FUNCTION rad2deg(rad DOUBLE)
RETURNS DOUBLE
BEGIN
RETURN (rad * 180 / PI());
END
GO
Espero que esto ayude
Con el ejemplo anterior, hay dos problemas, uno es que no funcionará en h2 y el 2 es splitStatements debe ser cierto:
<changeSet author="me" id="01_functions_mysql" dbms="mysql">
<sqlFile encoding="utf8" path="sql/01_functions.mysql.sql"
relativeToChangelogFile="true"
splitStatements="true"
stripComments="false"
endDelimiter="nGO" />
</changeSet>
y que algo como esto:
DROP FUNCTION IF EXISTS FIRST_DAY_THIS_MONTH;
GO
CREATE FUNCTION FIRST_DAY_THIS_MONTH (day date)
RETURNS date
DETERMINISTIC
BEGIN
RETURN STR_TO_DATE ( DATE_FORMAT ( day,'%Y%m01' ),'%Y%m%d');
END
GO
Si está utilizando el archivo yaml, aquí está la configuración
changeSet:
id: sqlFile-function
author: sandeep
logicalFilePath: baseFunctionScript
changes:
- sqlFile:
dbms: mysql
encoding: utf8
endDelimiter: nGO
path: my/path/baseScripts.sql
splitStatements: true
stripComments: false
Asegúrese de que stripComments sea falso, de lo contrario arrojará un error. Pasé 4 horas por eso.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)