I can retrieve comments for tables and columns by using SchemaCrawler and MySQL5.7, but it failed for the indexes' comments. This is an example:
1) Table definition
create table testtable(
id bigint unsigned auto_increment,
city_id varchar(256),
person_id varchar(256),
primary key(id) comment 'This is comment for the primary key',
key idx1 (city_id, person_id) comment 'This is the comment for test index'
) comment='This is the comment for test table';
2) Java code
// jdbc:mysql://localhost:3306/testdb?useInformationSchema=true&useUnicode=true&characterEncoding=utf8
final Connection connection = ...;
final DatabaseSpecificOverrideOptions databaseSpecificOverrideOptions =
SchemaCrawlerUtility.matchDatabaseSpecificOverrideOptions(connection);
final SchemaCrawler schemaCrawler = new SchemaCrawler(connection, databaseSpecificOverrideOptions);
final SchemaCrawlerOptions options = new SchemaCrawlerOptions();
options.setSchemaInfoLevel(SchemaInfoLevelBuilder.maximum());
options.setTableInclusionRule(new IncludeAll());
options.setColumnInclusionRule(new IncludeAll());
final Catalog catalog = schemaCrawler.crawl(options);
final Collection<schemacrawler.schema.Table> tables = catalog.getTables();
for (schemacrawler.schema.Table t : tables) {
System.out.println(t.getPrimaryKey().getRemarks());
for (schemacrawler.schema.Index index : t.getIndexes()) {
System.out.println(index.getRemarks());
}
}
Is there anything that I should adjust ?
Thanks!