开发者社区> 问答> 正文

mysql表的remarks属性是空

DataSource ds = ctx.getBean(DataSource.class); Connection conn = ds.getConnection(); DatabaseMetaData dmd = conn.getMetaData();

dmd中获取表的remarks属性是空?

原提问者GitHub用户shuli495

展开
收起
山海行 2023-07-05 21:51:33 299 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    DatabaseMetaData中的getTables方法返回的ResultSet中包含了表的元数据信息,其中包括表的名称、类型、注释等信息。通常情况下,表的注释信息可以通过getTables方法返回的ResultSet中的REMARKS列获取。但是有时候,可能会出现表的注释信息为空的情况,这可能是由于以下原因导致的:

    数据库中没有为表添加注释:如果在创建表的时候没有为表添加注释,那么getTables方法返回的ResultSet中的REMARKS列就没有注释信息。

    数据库驱动不支持获取表注释:有些数据库驱动并不支持获取表的注释信息,或者只支持部分数据库的注释信息。在这种情况下,getTables方法返回的ResultSet中的REMARKS列可能为空。

    数据库权限问题:有些数据库需要授予特定的权限,才能够获取表的注释信息。如果当前连接的用户没有获取表注释信息的权限,那么getTables方法返回的ResultSet中的REMARKS列可能为空。

    针对上述情况,可以尝试以下解决方案:

    为表添加注释:可以通过ALTER TABLE语句为表添加注释,例如:

    Copy
    ALTER TABLE table_name COMMENT 'table remarks';
    使用其他方式获取表注释:如果数据库驱动不支持获取表的注释信息,可以尝试使用其他的方式获取表注释,例如使用JDBC的元数据API或者通过查询系统表获取注释信息。

    检查数据库权限:如果是因为权限问题导致获取表注释失败,可以检查当前连接的用户是否拥有获取表注释信息的权限,并进行相应的授权。

    2023-07-30 09:38:21
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    获取MySQL表的remarks属性是一个常见的问题。在MySQL中,表的remarks属性通常为空。这是由于MySQL数据库的实现方式所导致的。

    MySQL的元数据中不直接存储表的remarks属性,而是将其存储在表的注释中。因此,要获取MySQL表的remarks属性,您需要查询表的注释信息。

    您可以使用如下的代码片段来获取MySQL表的remarks属性:

    String tableName = "your_table_name"; // 替换为您的表名
    
    ResultSet rs = dmd.getTables(null, null, tableName, null);
    while (rs.next()) {
        String tableRemarks = rs.getString("REMARKS");
        System.out.println("Table Remarks: " + tableRemarks);
    }
    

    在上面的代码中,使用getTables方法检索指定表名的表元数据,并通过getString("REMARKS")来获取表的remarks属性值。

    请注意,获取表的remarks属性在不同的数据库中可能会有不同的行为。如果以上方法在您的环境中无法正常工作,请查阅MySQL数据库的文档,了解如何获取表的remarks属性。

    希望这些信息对您有所帮助!如果您还有其他问题,请随时向我提问。

    2023-07-11 16:29:14
    赞同 展开评论 打赏
  • 已解决 jdbc url中加useInformationSchema=true参数

    原回答者GitHub用户shuli495

    2023-07-06 12:29:32
    赞同 展开评论 打赏
  • 基于您提供的信息,很可能是 MySQL 不支持在表或列级别上设置备注信息(remarks)。

    根据 JDBC 规范的定义,DatabaseMetaData.getTables 和 DatabaseMetaData.getColumns 方法应该返回表和列的备注信息。但实现这些方法的方式是由各个 JDBC 驱动程序提供的,因此并非所有驱动程序都支持这些方法获取备注信息。

    对于 MySQL 数据库,实际上,MySQL 不支持在表或列级别上设置备注信息。这意味着,即使您已经在 MySQL 数据库中添加了表或列的备注信息,使用 MySQL JDBC 驱动程序从元数据中获取这些信息时,也无法检索到这些信息。

    您可以使用以下查询检索表或列的备注信息:

    SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database' AND TABLE_NAME = 'your_table'; 复制 SELECT COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database' AND TABLE_NAME = 'your_table' AND COLUMN_NAME = 'your_column'; 复制

    在上面的查询中,您需要将 'your_database' 替换为您数据库的名称,'your_table' 替换为您要检索的表名,'your_column' 替换为您要检索的列名。

    2023-07-06 10:55:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像