Mysql 无法使liquibase在一个文件中执行多个脚本
我有一个spring启动应用程序和sqlite db。 若我在一个文件中写两个脚本,那个么只有第一个脚本对db进行更改。该表创建但没有数据插入,尽管在日志中我看到两个脚本都已执行。 若我将每个脚本写入单独的文件,那个么就可以了,表创建和数据插入。 如何使它在一个文件中执行多个脚本Mysql 无法使liquibase在一个文件中执行多个脚本,mysql,sqlite,spring-boot,liquibase,Mysql,Sqlite,Spring Boot,Liquibase,我有一个spring启动应用程序和sqlite db。 若我在一个文件中写两个脚本,那个么只有第一个脚本对db进行更改。该表创建但没有数据插入,尽管在日志中我看到两个脚本都已执行。 若我将每个脚本写入单独的文件,那个么就可以了,表创建和数据插入。 如何使它在一个文件中执行多个脚本 CREATE TABLE IF NOT EXISTS acl_class ( id INTEGER PRIMARY KEY AUTOINCREMENT, class character varying UNIQU
CREATE TABLE IF NOT EXISTS acl_class
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
class character varying UNIQUE NOT NULL
);
INSERT INTO acl_class
(class)
VALUES
('models.User');
mysql db也存在同样的问题,但我的应用程序出现运行时错误“原因是:liquibase.exception.DatabaseException:您的SQL语法有错误”;但语法正常,并且单独创建表时没有任何问题:
CREATE TABLE IF NOT EXISTS acl_class
(
id INT AUTO_INCREMENT PRIMARY KEY,
class VARCHAR(255) UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS acl_sid
(
id INT AUTO_INCREMENT PRIMARY KEY,
principal boolean NOT NULL,
sid VARCHAR(255) UNIQUE NOT NULL
);
多亏了SteveDonie,问题很容易解决了:我刚刚用multiply脚本在文件开头添加了这两行:
--liquibase格式的sql
--变更集myname:创建多个表splitStatements:true endDelimiter:
而且成功了 您的主变更日志是什么样子的?可能的问题是您没有指定Liquibase应该拆分语句以及拆分字符应该是什么。最近有一篇博文讨论了这个话题——非常感谢!我刚刚用multiply脚本在文件的开头添加了这两行:--liquibase-formatted-sql--changeset-myname:create-multiple-tables-splitStatements:true-endDelimiter:;而且成功了!另外,值得注意的是,我以前使用过一个文件,其中包含几个使用PostgreSql的脚本,而不需要使用此注释。因此,我不明白为什么它现在不起作用