Create databases with liquibase on empty mysql instance

paul picture paul · Dec 15, 2015 · Viewed 13.5k times · Source

I have fresh mysql instance and want to be able to create a plenty of databases and populate it with liquibase. While I have scripts (changesets) which works fine on manually created databases I want to be able to create databases with liquibase as well. When I try to connect without specifing database in URL I've got the error:

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))]

I don't need these changes (database creation) to be tracked by liquibase, seems like I want to use LB as quick bootstrap tool.

Answer

Vipin Jain picture Vipin Jain · Dec 20, 2015

Very first need to add database name in URL like jdbc:mysql://localhost:3306/database_name.

you can also create a fresh database using this URL

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

createDatabaseIfNotExist this keyword create a fresh new database in your system. If the database does not exist. if exist, skip executing.

How to create database with Liquibase