Liquibase(changeLogSync,update,changeLogSyncSQL)不建表不插入数据
Liquibase (changeLogSync, update, changeLogSyncSQL) does not create tables or inserts data
我一直在关注这个人的页面,以至少使用我的基础 table 和数据来设置 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
我做了两次,一次是 table 结构,一次是数据。
./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 runs 和 syas 就成功了。虽然当我检查数据库时我只有 2 tables。
DATABASECHANGELOG
DATABASECHANGELOGLOCK
如果我查看 DATABASECHANGELOG,它包含 运行 同步命令后来自两个文件的所有提交。但它没有我需要的任何 tables,当然也没有数据。我想也许它不会显示 tables 是版本控制等等,所以我尝试了一个常规的 select 语句。
select * from ua_auth_user;
ERROR 1146 (42S02): Table 'tester.ua_auth_user' doesn't exist
任何帮助都很棒。我需要做什么才能让 liquibase 使用我导出的数据从新数据库生成我的模式。如果我在获取数据和 table 结构时做错了什么,我会更改它。在我尝试主要开发之前,我只是按照说明来获得一个工作示例和 运行。
---更新(根据 Nathan Voxland 的建议)
除了一个 table 之外,我删除了所有 table。我删除了数据库并创建了一个 b运行d 新数据库。然后我运行下面的命令。
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 生成了 json 错误但它并非无效 json 只是错误并包装了两次约束。我不知道它是否应该是这样的,但在删除第二个约束后它生成了所有表。去掉底部的唯一和外部约束后,我的表格文件大约有 4000 行。所以我不完全确定 json 中没有更多错误。
生成错误
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
更正
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
您需要检查正在生成的文件。出于某种原因,liquibase 错误地生成了 json。查看您的文件后,您需要做的是:
原创
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
}
更正
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
我一直在关注这个人的页面,以至少使用我的基础 table 和数据来设置 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
我做了两次,一次是 table 结构,一次是数据。
./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 runs 和 syas 就成功了。虽然当我检查数据库时我只有 2 tables。
DATABASECHANGELOG
DATABASECHANGELOGLOCK
如果我查看 DATABASECHANGELOG,它包含 运行 同步命令后来自两个文件的所有提交。但它没有我需要的任何 tables,当然也没有数据。我想也许它不会显示 tables 是版本控制等等,所以我尝试了一个常规的 select 语句。
select * from ua_auth_user;
ERROR 1146 (42S02): Table 'tester.ua_auth_user' doesn't exist
任何帮助都很棒。我需要做什么才能让 liquibase 使用我导出的数据从新数据库生成我的模式。如果我在获取数据和 table 结构时做错了什么,我会更改它。在我尝试主要开发之前,我只是按照说明来获得一个工作示例和 运行。
---更新(根据 Nathan Voxland 的建议)
除了一个 table 之外,我删除了所有 table。我删除了数据库并创建了一个 b运行d 新数据库。然后我运行下面的命令。
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 生成了 json 错误但它并非无效 json 只是错误并包装了两次约束。我不知道它是否应该是这样的,但在删除第二个约束后它生成了所有表。去掉底部的唯一和外部约束后,我的表格文件大约有 4000 行。所以我不完全确定 json 中没有更多错误。
生成错误
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
更正
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
您需要检查正在生成的文件。出于某种原因,liquibase 错误地生成了 json。查看您的文件后,您需要做的是:
原创
"column": {
"autoIncrement": true,
"constraints": {
"constraints": {
"primaryKey": true
}
}
}
更正
"column": {
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}