为什么h2数据库有数据转换错误

qaxu7uf2  于 2021-07-22  发布在  Java
关注(0)|答案(2)|浏览(367)

我对h2数据库有问题。
我试着像这样输入数据库中的值

INSERT INTO INGREDIENT(id,name,type) values ('FLTO','pszenna','WRAP');

但后来我犯了个错误
转换“wrap”(成分:“type”“integer”)时发生数据转换错误;sql语句:
当我做smth的时候,我的查询也在工作

INSERT INTO INGREDIENT(id,name,type) values ('FLTO','pszenna','3');

但是在schema.sql文件中,type字段是varchar,所以为什么这不起作用呢

create table if not exists Ingredient (
  id varchar(4) not null,
  name varchar(40) not null,
  type varchar(10) not null
);
bvhaajcl

bvhaajcl1#

我试图用代码(使用spring的jdbctemplate)重现您的错误,但运行成功:

@Test
public void testH2() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:file:/tmp/test123");
    JdbcTemplate jdbc = new JdbcTemplate(ds);
    jdbc.update("drop table if exists ingredient");
    jdbc.update(
            "create table if not exists ingredient(" +
            " id varchar(4) not null," +
            " name varchar(40) not null," +
            " type varchar(10) not null)"); // if this is " type int)" I get the same error message
    jdbc.update("delete from ingredient");
    showTable(jdbc, "empty");
    jdbc.update("insert into ingredient(id,name,type) values ('FLTO','pszenna','3')");
    showTable(jdbc, "added FLTO");
    jdbc.update("insert into ingredient(id,name,type) values ('FLTW','pszennb','WRAP')");
    showTable(jdbc, "added FLTW");
}

void showTable(JdbcTemplate jdbc, String message) {
    System.out.println("=== " + message + " ===");
    jdbc.query("select id, name, type from ingredient order by id", rs -> {
        int n = 0;
        while (rs.next()) {
            System.out.println("id=" + rs.getString(1) + " name=" + rs.getString(2) + " type=" + rs.getString(3));
            n++;
        }
        System.out.println(n + " rows");
        return n;
    });
}

如果我改变了 typeint 我收到了和你完全一样的错误信息。

7nbnzgx9

7nbnzgx92#

好吧,我想问题出在数据库上,因为当我想
滴表成分;
找不到错误表“ingrdient”。
这是我的application.properties文件


# Enabling H2 Console

spring.h2.console.enabled=true

# Custom H2 Console URL

spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:mem:testdb

我知道我该怎么做

相关问题