Reputation: 976
Ive been following this guys page to get Liquibase setup ( http://bytefilia.com/managing-database-schema-changes-liquibase-existing-schema/ ) with at least my base tables and data. I have successfully ran
./liquibase --driver=com.mysql.jdbc.Driver \
--classpath=lib/mysql-connector-java-5.1.34-bin.jar \
--changeLogFile="../data/database/boot.json" \
--url="jdbc:mysql://localhost/tester" \
--username=root \
--password=password \
--logLevel=debug \
generateChangeLog
I do this two times one for the table structure and one for the data.
./liquibase --driver=com.mysql.jdbc.Driver \
--classpath=lib/mysql-connector-java-5.1.34-bin.jar \
--changeLogFile="../data/database/base-data.json" \
--url="jdbc:mysql://localhost/tester" \
--username=root \
--password=password \
--logLevel=debug \
--diffTypes="data"
generateChangeLog
It generates both files boot.json & base-data.json. The files seem to be good at least comparing them to other websites and the liquibase files. The only problem that I have found is with the data file the datetime stamps generate an error about the ":" , but if I wrap them in quotes liquibase runs and syas it did it successfully. Though when I checked the database I only have 2 tables.
DATABASECHANGELOG
DATABASECHANGELOGLOCK
If I look inside DATABASECHANGELOG it has all the commits from both files after running the sync command. But it does not have any of the tables I need and of course no data. I thought maybe it wouldnt display the tables being version control and all so I tried a regular select statement.
select * from ua_auth_user;
ERROR 1146 (42S02): Table 'tester.ua_auth_user' doesn't exist
Any help is awesome. What do I need to do to get liquibase generating my schemas from a fresh database with the data that I exported. If I have done something wrong in getting the data and table structure I'll change it. I was only following the instructions to get a working example up and running before I try major development.
---Update (Following sugestions from Nathan Voxland)
I removed all tables except one table to start with. I dropped the database and create a brand new one. Then I ran the command below.
boot.json
{ "databaseChangeLog": [
{
"changeSet": {
"id": "1",
"author": "lumberjacked",
"changes": [
{
"createTable": {
"columns": [
{
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
},
"name": "id",
"type": "INT"
}
},
{
"column": {
"name": "subject_category_id",
"type": "INT"
}
},
{
"column": {
"name": "subject",
"type": "VARCHAR(50)"
}
},
{
"column": {
"name": "label",
"type": "VARCHAR(50)"
}
}]
,
"tableName": "common__subjects"
}
}]
}
}
]}
Command
➜ liquibase-bin git:(test) ✗ ./liquibase
--driver=com.mysql.jdbc.Driver
--classpath=lib/mysql-connector-java-5.1.34-bin.jar
--changeLogFile="../data/database/boot.json"
--url="jdbc:mysql://localhost/tester"
--username=root
--password=password
--logLevel=debug update
Error Message
Unexpected error running Liquibase:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect
table definition; there can be only one auto column and it must be
defined as a key
SEVERE 1/18/15 4:05 PM: liquibase:
../data/database/boot.json::1::lumberjacked:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect
table definition; there can be only one auto column and it must be
defined as a key
Upvotes: 0
Views: 4360
Reputation: 959
You need to inspect the files that are being generated. For some reason liquibase generated your json incorrectly. After looking at your file here is what you need to do:
original
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
}
corrected
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
Upvotes: 1
Reputation: 976
When I exported the data for some reason liquibase generated the json wrong but its not invalid json just wrong and wrapped constraints twice. I don't know if its suppose to be this way but after removing the second constraint it generated all the tables. My file of tables is around 4000 lines after striping out the unique and foreign constraints at the bottom. So I'm not completely sure there aren't more errors in the json.
generated wrong
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
corrected
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
Upvotes: 0