Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MySQL的SimpleJdbcInsert_Java_Mysql_Spring_Spring Jdbc - Fatal编程技术网

Java 使用MySQL的SimpleJdbcInsert

Java 使用MySQL的SimpleJdbcInsert,java,mysql,spring,spring-jdbc,Java,Mysql,Spring,Spring Jdbc,这是我写的相关代码: new SimpleJdbcInsert(dataSource) .withSchemaName("test") .withTableName("tableName") .usingGeneratedKeyColumns("idColumn"); 当我调用executeAndReturnKey(参数)时,我在控制台上读到: 警告 [org.springframework.jdbc.core.metadata.TableMetaDataProvide

这是我写的相关代码:

new SimpleJdbcInsert(dataSource)
    .withSchemaName("test")
    .withTableName("tableName")
    .usingGeneratedKeyColumns("idColumn");
当我调用
executeAndReturnKey(参数)
时,我在控制台上读到:

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

为什么会发生这种情况?我知道我可以手动指定列名,但我相信这不是使用JdbcSimpleInsert的目的

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

在不同的MySQL服务器上执行相同的查询时,我遇到了以下错误:
java.sql.SQLException:给定语句的参数元数据不可用

所以我用石头杀死了鸟儿:)


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

我得到了一个相同的错误,原因不同。在我的JDBC连接字符串中,我列出了模式。因此,将
放置在chemaname
子句中会导致此错误。当我删除它时,插入成功。

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