我在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;
但是,当我尝试为测试初始化表时,它会返回以下错误:
原因:组织。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();
}
}
谢谢
使用h2-1.4.196 MySQL模式,您的代码片段会出现以下错误:
未找到列“ID”(…)
您的DDL在id
周围错误,需要修复。
为了修复您面临的错误,我建议:
>
您真正的主键似乎是fieldA,而不是id。请相应地更改SQL 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 (`fieldA`),
KEY `fieldF` (`fieldF`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
有没有人知道在部署应用程序时会发生什么,为什么同时会有这么多的连接,而我只是在部署一个应用程序,而不是插入数据? 该项目是一个SparingBoot应用程序,所以我默认使用HikariCP作为连接池。我是唯一连接到数据库的用户。 我没有声明某个JPA持久性单元。 下面是上的日志 2021-02-21 14:50:40.153信息4792----[任务-1]com.zaxxer.hikari.hik
本文向大家介绍mysql 5.7.9 winx64在windows上安装遇到的问题,包括了mysql 5.7.9 winx64在windows上安装遇到的问题的使用技巧和注意事项,需要的朋友参考一下 mysql5.7.9版本以上在windwos上安装时会遇到无法启动但是没有任何报错的问题,那是因为5.7.9以上的版本在MySQL目录下会缺少data目录: Data目录下存储的是一些表文件,用来描述
我试图从Coldfusion 10服务器执行一个MySQL insert语句,这会导致一个Cold Fusion错误。 当从MySQL工作台执行MySQL insert语句时,它可以正常工作。此外,我确认在Coldfusion 10服务器上执行的select语句工作正常。 接下来,我尝试设置变量“binlog format”cfquery本身。 这导致了一个新的CFE。 最后,我尝试在“MySQL
问题内容: 我正在将WordPress博客和phpBB论坛迁移到新的托管服务器中。我正在使用phpMyAdmin从先前站点中的数据库导入SQL脚本。 当我用Kate打开.sql脚本时,它说它使用UTF8作为编码。当我在新服务器中导入sql时,可以在phpMyAdmin中选择编码,默认情况下选择utf8。 仍然,当我完成数据库的导入后,我直接在phpMyAdmin中阅读了帖子文本,并看到诸如“é”,
问题内容: 我有一个包含许多用户的表。在该表中,我有一个名为user_id(INT)的列,我想为每个人分别增加。user_id必须从1开始 我准备了一个简单的示例: 以下查询将执行此操作,但是仅在表中已经存在“鲍勃”的情况下才有效… 如果Bob不存在(第一项),则user_id设置为0(零)。这就是问题。我需要user_id从1而不是0开始。 问题答案: 您可以使用如下所示的内容: 但是这样的查询
用于创建表的DB脚本: 创建表(bigint不为NULL,文本,主键())engine=innoDB默认charset=utf8; Rptdesign已附在此处