【问题标题】:SimpleJdbcInsert with MySQLSimpleJdbcInsert 与 MySQL
【发布时间】:2013-01-22 21:58:01
【问题描述】:

这是我写的相关代码:

new SimpleJdbcInsert(dataSource)
    .withSchemaName("test")
    .withTableName("tableName")
    .usingGeneratedKeyColumns("idColumn");

当我打电话给executeAndReturnKey(parameters) 时,我在控制台上看到了这个:

警告 [org.springframework.jdbc.core.metadata.TableMetaDataProvider:locateTableAndProcessMetaData:336] (主要:)无法找到“tableName”的表元数据——列 必须提供姓名

为什么会这样?我知道我可以手动指定列名,但我相信这不是使用 JdbcSimpleInsert 的重点。

  • MySQL 版本为 5.5.9
  • MySQL 连接器/J 5.1.23
  • 春季 3.2.1

【问题讨论】:

  • 您是否有一个名为 tableName 的表,其中包含列并且您可以从 sql 读取/写入它?
  • 当然,事实上,如果我使用 usingColumns() 手动指定要写入的列,则查询会正确生成并且可以正常工作。

标签: java mysql spring spring-jdbc


【解决方案1】:

在不同的 MySQL 服务器上执行相同的查询时,我遇到了这个错误:java.sql.SQLException: Parameter metadata not available for the given statement
所以我用石头杀鸟:)

所以,只需将 generateSimpleParameterMetadata=true 添加到 JDBC 连接 URL,一切都会按预期工作。

【讨论】:

    【解决方案2】:

    出于不同的原因,我遇到了相同的错误。在我的 JDBC 连接字符串中,我列出了架构。因此,放置withSchemaName 子句会导致此错误。当我删除它时,插入工作。

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2012-12-05
      相关资源
      最近更新 更多