根据这个问题及其评论,为了获得约束(我对检查约束特别感兴趣),必须执行以下操作:
包括
.jar
与他们选择的数据库驱动程序相对应的一个,例如schemacrawler-postgresql或schemacrawler-sqlite。将详细级别设置为
detailed
(或更高),如下所示:
val optionsBuilder = SchemaCrawlerOptionsBuilder.builder()
.withLoadOptions(LoadOptionsBuilder.builder()
.withSchemaInfoLevel(SchemaInfoLevelBuilder.detailed())
.toOptions()
)
val options = optionsBuilder.toOptions()
val catalog = SchemaCrawlerUtility.getCatalog(dataSource.get(), options)
- 使用
Table.getTableConstraints()
方法。
我已经包含.jar
了 PostgreSQL、SQLite、MySQL 的文件,但我只得到了 PostgreSQL 的约束,而 SQLite 和 MySQL 的结果都是空的(不仅有检查约束,也没有空约束,但没有它们的迹象要么;可以通过检查列是否可以直接为空来检索此信息,但没有用于检查约束的此类 API)。有没有我没有考虑过的其他步骤?包括.jar
for MySQL 似乎有助于解决上面链接的问题。
我的依赖项如下:
implementation("us.fatehi:schemacrawler:16.9.3")
implementation("us.fatehi:schemacrawler-mysql:16.9.3")
implementation("us.fatehi:schemacrawler-sqlite:16.9.3")
implementation("us.fatehi:schemacrawler-postgresql:16.9.3")