Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create databases with liquibase on empty mysql instance

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.

like image 319
paul Avatar asked Dec 15 '15 07:12

paul


2 Answers

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

like image 180
Vipin Jain Avatar answered Oct 05 '22 00:10

Vipin Jain


You need to specify the database in the URL.

EDIT

Liquibase doesn't actually do the very first step of creating the empty database with permissions, etc. That must be done using the platform's native tools. Once an empty database is in place, liquibase will populate the database schema by creating the correct tables, etc.

like image 21
SteveDonie Avatar answered Oct 04 '22 23:10

SteveDonie