在空的 MySQL 实例上使用 Liquibase 创建数据库

13

我有一个新的MySQL实例,并希望能够创建大量数据库并使用Liquibase填充这些数据库。 虽然我有适用于手动创建的数据库的脚本(变更集),但我也希望能够使用Liquibase创建数据库。 当我尝试在URL中未指定数据库连接时,出现了错误:

liquibase --driver=com.mysql.jdbc.Driver --url=jdbc:mysql://localhost:3306/ --username=root --password=admin --changeLogFile=create_dbs.sql tag empty
Unexpected error running Liquibase: Incorrect database name '' [Failed SQL: CREATE TABLE ``.DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED BIT(1) NOT NULL, LOCKGRANTED datetime NULL, LOCKEDBY VARCHAR(255) NULL, CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))]

我不需要Liquibase追踪这些更改(数据库创建),似乎我想将LB用作快速引导工具。

2个回答

33

首先需要在URL中添加数据库名称,如jdbc:mysql://localhost:3306/database_name

您还可以使用此URL创建一个新的数据库。

jdbc:mysql://localhost:3306/database_name?createDatabaseIfNotExist=true

createDatabaseIfNotExist这个关键词会在您的系统中创建一个全新的数据库,如果该数据库不存在,如果存在则跳过执行。

如何使用Liquibase创建数据库


这在我使用Postgres时无法工作。 - JohnOpincar
@Vipin Jain 拯救了我的一天。最好的解决方案中的佼佼者。 - Aԃιƚყα Gυɾαʋ

6

您需要在URL中指定数据库。

编辑

Liquibase实际上并不执行创建空数据库及其权限等操作的第一步。这必须使用平台本地工具完成。一旦有了一个空数据库,liquibase将通过创建正确的表等来填充数据库架构。


1
但是在新安装中没有数据库。我的意思是我想创建数据库。 - paul
1
@SteveDonie 是正确的,Liquibase 不会创建数据库。 - malaguna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接