Я следил за этой страницей парней, чтобы получить установку Liquibase ( http://bytefilia.com/managing-database-schema-changes-liquibase-existing-schema/ ) по крайней мере с моими базовыми таблицами и данными. я успешно побежал
./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
Я делаю это два раза: один для структуры таблицы и один для данных.
./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
Он генерирует оба файла boot.json и base-data.json. Файлы кажутся хорошими, по крайней мере, по сравнению с другими веб-сайтами и файлами liquibase. Единственная проблема, которую я обнаружил, заключается в том, что в файле данных штампы даты и времени генерируют ошибку о ":" , но если я заключаю их в кавычки, liquibase запускается и syas делает это успешно. Хотя, когда я проверял базу данных, у меня было только 2 таблицы.
DATABASECHANGELOG
DATABASECHANGELOGLOCK
Если я загляну внутрь DATABASECHANGELOG, там будут все коммиты из обоих файлов после выполнения команды синхронизации. Но в нем нет ни одной из нужных мне таблиц и, конечно же, никаких данных. Я подумал, что, возможно, он не будет отображать таблицы, являющиеся контролем версий, и все такое, поэтому я попробовал обычный оператор выбора.
select * from ua_auth_user;
ERROR 1146 (42S02): Table 'tester.ua_auth_user' doesn't exist
Любая помощь прекрасна. Что мне нужно сделать, чтобы Liquibase сгенерировала мои схемы из свежей базы данных с данными, которые я экспортировал. Если я сделал что-то не так при получении данных и структуры таблицы, я это изменю. Я только следовал инструкциям, чтобы запустить рабочий пример, прежде чем приступить к серьезной разработке.
--- Обновление (после предложений Натана Воксланда)
Я удалил все таблицы, кроме одной таблицы для начала. Я удалил базу данных и создал новую. Затем я выполнил команду ниже.
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"
}
}]
}
}
]}
Команда
➜ 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
Сообщение об ошибке
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
liquibase update
? - person Nathan Voxland   schedule 16.01.2015