我在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配置中的表:
@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();
}
}谢谢!
发布于 2018-06-04 09:21:34
使用h2-1.4.196 MySQL模式,代码段会出现以下错误:
找不到"ID“栏(.)
您的DDL在id中是错误的,需要修复。
为了纠正您所面临的错误,我建议:
jdbc:h2:mem:;mode=mysqlfieldA,而不是id。请相应地更改SQL:
创建表foo ( fieldA BIGINT(20) NOT NULL AUTO_INCREMENT,fieldB BIGINT(20) NULL,fieldC时间戳NULL,fieldD时间戳NULL,fieldE VARCHAR(40) NULL,fieldF VARCHAR(40) NULL,fieldG CHAR(3) NULL,主键(fieldA),键<代码>D19 (fieldF) ) ENGINE=InnoDB默认CHARSET=utf8;https://stackoverflow.com/questions/50587705
复制相似问题