我有一个在mysql中创建的表,它已经启动,并且运行良好。但是我已经用h2定义了一个内存中的数据库用于测试,它使用相同的ddl来克隆表,我可以用它来测试我的应用程序。
CREATE TABLE `foo` (
`fieldA` BIGINT(20) NOT NULL AUTO_INCREMENT,
`fieldB` BIGINT(20) NOT NULL,
`fieldC` TIMESTAMP NOT NULL,
`fieldD` TIMESTAMP NOT NULL,
`fieldE` VARCHAR(40) NOT NULL,
`fieldF` VARCHAR(40) NOT NULL,
`fieldG` CHAR(3) NOT NULL,
PRIMARY KEY (`id`),
KEY `fieldF` (`fieldF`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但当我尝试为测试初始化表时,它会返回以下错误:
原因:org.h2.jdbc.jdbcsqlexception:未知数据类型:“fieldf”;
这和错误得到的帮助差不多。我已经显式地将字段f设置为varchar(40),那么我还需要做什么呢?
如果有帮助,我将在spring boot配置中创建以下表:
@Configuration
@EnableAutoConfiguration
@Import(ImportDataJobConfig.class)
public class TestJobConfiguration {
@Bean
public DataSource tlDataSource() {
return new EmbeddedDatabaseBuilder()
.generateUniqueName(true)
.setType(H2)
.setScriptEncoding("UTF-8")
.ignoreFailedDrops(true)
.addScript("sql/ve/init.sql")
.build();
}
}
谢谢!
1条答案
按热度按时间hgqdbh6s1#
使用h2-1.4.196 mysql模式,您的代码段会出现以下错误:
找不到列“id”(…)
你的ddl搞错了
id
需要修复。为了纠正您面临的错误,我建议:
在jdbc url中使用mysql模式,比如
jdbc:h2:mem:;mode=mysql
看来你真正的主键是fieldA
,不是id
. 请相应地更改sql ddl: