Liquibase 不执行 SQL 并且 returns 更新成功
Liquibase doesn't execute SQLs and returns Update Successful
我在我的电脑上创建了一个新的 PostgreSQL 数据库,
CREATE DATABASE "Test_Liquibase_Versionin"
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'English_United States.1252'
LC_CTYPE = 'English_United States.1252'
CONNECTION LIMIT = -1;
已下载 liquibase-3.4.2-bin 和 运行 此命令:
C:\LiquiBase\liquibase.bat --driver=org.postgresql.Driver --classpath="C:\LiquiBase\Driver\postgresql-9.4.1212.jar" --changeLogFile=C:\LiquiBase\changes\databaseChangeLog.sql --url="jdbc:postgresql://localhost:5432/Test_Liquibase_Versionin?user=test&password=Password" update
收到此回复Liquibase Update Successful
检查数据库并注意到我有 2 个表 databasechangelog, databasechangeloglock
已将 databaseChangeLog.sql 更改为如下所示:
--liquibase formatted sql
create table employees( uuid int, name Varchar(10));
insert into employees values(1, 'Mr');
insert into employees values(2, 'Mail');
create table depts( dept_id int, dep_name Varchar(10));
再次执行C:\LiquiBase\liquibase.bat.........
收到此回复Liquibase Update Successful
登录到我的数据库 - 但没有预期的新表。
这可能是什么原因?我可以做些什么来测试哪里出了问题?
您需要向脚本添加变更集。
这是因为您告诉 Liquibase 您的 sql 脚本是 Liquibase formatted sql
。但是因为你没有任何变更集,所以它什么都不做。
--liquibase formatted sql
--changeSet PeterH:Inserting-Values1 endDelimiter:; splitStatements:true stripComments:false runOnChange:false
create table employees( uuid int, name Varchar(10));
insert into employees values(1, 'Mr');
insert into employees values(2, 'Mail');
create table depts( dept_id int, dep_name Varchar(10));
在我的例子中,我在文件上设置了 liquibase header,但问题在于用户名(进行更改的用户)和参数之间的 space:
--liquibase formatted sql
--changeset Jenkins: scriptname.sql stripComments:true splitStatements:true
如您所见,"Jenkins:"和"scriptname.sql"之间有一个space。我已经删除了 space 并且它运行正常
我在我的电脑上创建了一个新的 PostgreSQL 数据库,
CREATE DATABASE "Test_Liquibase_Versionin"
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'English_United States.1252'
LC_CTYPE = 'English_United States.1252'
CONNECTION LIMIT = -1;
已下载 liquibase-3.4.2-bin 和 运行 此命令:
C:\LiquiBase\liquibase.bat --driver=org.postgresql.Driver --classpath="C:\LiquiBase\Driver\postgresql-9.4.1212.jar" --changeLogFile=C:\LiquiBase\changes\databaseChangeLog.sql --url="jdbc:postgresql://localhost:5432/Test_Liquibase_Versionin?user=test&password=Password" update
收到此回复Liquibase Update Successful
检查数据库并注意到我有 2 个表 databasechangelog, databasechangeloglock
已将 databaseChangeLog.sql 更改为如下所示:
--liquibase formatted sql
create table employees( uuid int, name Varchar(10));
insert into employees values(1, 'Mr');
insert into employees values(2, 'Mail');
create table depts( dept_id int, dep_name Varchar(10));
再次执行C:\LiquiBase\liquibase.bat.........
收到此回复Liquibase Update Successful
登录到我的数据库 - 但没有预期的新表。 这可能是什么原因?我可以做些什么来测试哪里出了问题?
您需要向脚本添加变更集。
这是因为您告诉 Liquibase 您的 sql 脚本是 Liquibase formatted sql
。但是因为你没有任何变更集,所以它什么都不做。
--liquibase formatted sql
--changeSet PeterH:Inserting-Values1 endDelimiter:; splitStatements:true stripComments:false runOnChange:false
create table employees( uuid int, name Varchar(10));
insert into employees values(1, 'Mr');
insert into employees values(2, 'Mail');
create table depts( dept_id int, dep_name Varchar(10));
在我的例子中,我在文件上设置了 liquibase header,但问题在于用户名(进行更改的用户)和参数之间的 space:
--liquibase formatted sql
--changeset Jenkins: scriptname.sql stripComments:true splitStatements:true
如您所见,"Jenkins:"和"scriptname.sql"之间有一个space。我已经删除了 space 并且它运行正常