h2 相关问题

H2是用Java编写的关系数据库管理系统。它可以嵌入Java应用程序中,也可以在客户端 - 服务器模式下运行。 H2支持常规的基于磁盘的数据库以及内存数据库。

使用 LIKE 通配符从 H2 文本数组中选择

我有一个类型为 TEXT ARRAY 的 H2 列。 创建表 app.worklist ( id 整数, 专业文本数组 ); 我想查询是否有任何数组元素与 LIKE 参数匹配。 以下是...

回答 1 投票 0

Liquibase及功能指标

如果您在使用 Liquibase 时尝试执行脚本在 H2(面向 PostgreSQL 的上下文)上创建功能索引,则会出现可疑错误。 脚本本身如下所示: 如果您在使用 Liquibase 时尝试执行脚本以在 H2(面向 PostgreSQL 的上下文)上创建功能索引,则会出现可疑错误。 脚本本身如下所示: <changeSet id="2" author="..."> <createIndex tableName="test_table" indexName="test_table_id_idx"> <column name="(date_trunc('day', create_date))"/> </createIndex> </changeSet> 错误信息: Syntax error in SQL statement "CREATE INDEX TEST_TABLE_ID_IDX ON TEST_TABLE(([*]DATE_TRUNC('day', CREATE_DATE)))"; expected "identifier"; SQL statement: CREATE INDEX test_table_id_idx ON test_table((date_trunc('day', create_date))) [42001-200] GitHub 上的 PoC 说实话,我不知道这样一个奇怪的脚本补充是从哪里出现的(关于这个[*])。也许 H2 不明白你需要使用哪个字段并替换 Vilcard 或类似的东西。 是的,我知道 H2 和真实 PostgreSQL 的实现中可能存在冲突和差异(如果那样的话,PostgreSQL 脚本执行正确),但我想了解是什么导致了脚本的这种变化。 H2 的错误消息中的[*] 标记了发现语法错误的位置。 H2 不支持表达式索引,只能对列建立索引。 H2 支持计算列上的索引,因此可以使用函数添加计算列,为其建立索引,并在查询中使用此计算列而不是基列上的函数,在这种情况下可以使用此索引。但我认为如果你的主数据库系统是 PostgreSQL,那不是你的本意。如果您仅将 H2 用于某些测试,则从 H2 的变更集中删除此类不兼容索引的创建更为合理。 使用 计算:正确 databaseChangeLog: - changeSet: dbms: postgresql changes: - createIndex: tableName: test_table indexName: test_table_id_idx columns: - column: **computed: true** name: ((create_date)::date)

回答 2 投票 0

如何在 Play Framework 2.4 中使用相对于项目根目录的路径来进行 H2 数据库文件配置?

我们正在开发 Play 2.4 应用程序(Java API)。 出于开发目的,我们希望使用持久性 H2 数据库,其数据库文件路径相对于项目根目录。 在如何使用持久...

回答 3 投票 0

当columnType为json时,H2无法按预期工作

我使用H2进行集成测试,使用spring与kotlin,jpa + hibernate。 我的代码中的模型有一个带有 columnDefinition = "JSON" 的字符串字段,这会导致 H2 出现问题。 导入j...

回答 2 投票 0

使用 SQL 和内部加密数据库在 Java 应用程序中实现安全用户帐户同步的最佳方法?

我正在开发一个 Java 应用程序,该应用程序具有 Angular 前端和基于 Java 的后端,该后端将连接到 SQL 数据库以进行一般数据存储。此外,我计划包括一个内部加密......

回答 2 投票 0

Hibernate 6.5 中的自定义H2方言

我们正在将项目从 Spring Boot 2.7 升级到 3.3.5,其中包括升级到 Hibernate 6。在生产中,我们使用 PostgreSQL,在本地开发中,我们使用 H2。 我们的

回答 1 投票 0

无法生成 org.h2.jdbcx.JdbcConnectionPool 类的 CGLIB 子类

问题: 我正在执行一个依赖项迁移任务,试图将 Spring 代码库从 Spring 2.6.9 迁移到 Spring 2.7.0。但是,我面临一些与迁移 H2 相关的问题。 我读了

回答 1 投票 0

SqL 脚本插入未找到列

这是我的sql脚本: -- 为工具租赁项目创建内存数据库。 -- 预计将替换为实际数据库 -- -- 创建Schema以供使用 如果不存在则创建架构

回答 1 投票 0

H2升级到2.1.210无法创建1.4.192成功的表

CREATE TABLE "INFO" ("ID" BIGINT NOT NULL PRIMARY KEY AUTO_INCRMENT[*], "OWNER" VARCHAR(255) NOT NULL)"; 预期为“HASH、CONSTRAINT、COMMENT、UNIQUE、NOT、N...

回答 1 投票 0

无法使用Spring-Data-JPA将数据保存到表(H2数据库)

我使用H2数据库版本2.2.224和Spring-Data-JPA版本3.3.3。我在“USERS”和“ROLES”表之间有多对多关系。 当我尝试保存“Ent...

回答 1 投票 0

为什么没有h2就不能使用JPA

我刚开始学习Spring,有一些东西不太清楚。 我的 pom 是这样完成的: 我刚开始学习Spring,有一些东西不太清楚。 我的 pom 是这样完成的: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 当我启动应用程序时,抛出以下错误: 应用程序无法启动 描述: 配置数据源失败:未指定“url”属性,无法配置嵌入数据源。 原因:未能确定合适的驱动程序类别 行动: 考虑以下因素: 如果您想要嵌入式数据库(H2、HSQL 或 Derby),请将其放在类路径中。 如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有活动配置文件)。 如果我添加此依赖项: <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> 然后应用程序就可以运行了 我想了解 Jpa 是否需要 h2 才能工作,因为在许多示例中我看到通常不会添加此依赖项来使应用程序工作。 我检查了项目属性 --> Java 构建路径 --> 源(选项卡)--> 构建路径上的源文件夹 我注意到,在项目属性 --> Java 构建路径 --> 源(选项卡) --> 构建路径上的源文件夹中,在 src/main/resources 中,排除的项目标记为 **。 我删除了它,现在一切正常。 如果您使用 Spring starter 并且没有在 pom.xml 中指定任何特定数据库,那么 Spring Data 将为您配置默认的 H2(内存中)数据库。您不需要将 h2 工件放入 pom.xml 中。 但是在您的 pom.xml 中已经添加了 MySql 工件。在这种情况下,您必须告诉 Spring JPA 应该使用哪个数据库。例如,通过在 application.properties 中添加数据源详细信息。 如果您决定使用 MySQL,那么 pom.xml 中的工件将是: <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> application.properties 中的数据源定义为: spring.datasource.url=jdbc:mysql://localhost:3306/<some_db_name> spring.datasource.username=<some_username> spring.datasource.password=<some_password> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 要让 Spring Data 在启动期间从实体类创建/更新数据库,请使用以下属性: spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update 如果您想从 DDL 脚本创建数据库并从脚本文件插入一些数据 - 请使用以下属性: spring.jpa.hibernate.ddl-auto=none spring.sql.init.mode=always Spring 将使用位于类路径(默认)上的默认脚本 schema.sql 和 data.sql。更详细的 Spring 文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-initialization.using-basic-sql-scripts

回答 2 投票 0

保存 Arena 数据时出现 Hibernate 异常(不存在具有给定标识符的行)

这是我第一次将 Hibernate ORM 集成到我的项目中,并且在尝试调试 org.hibernate.UnresolvableObjectException: No row with the给定标识符存在时遇到了一些麻烦

回答 1 投票 0

H2数据库:在CTE内使用窗口函数时出错

使用H2数据库(版本1.4.200)我在CTE内使用窗口函数时遇到了非常奇怪的错误。当我将窗口函数字段包含到 CTE 中并且 OVER() 子句为空时,它可以工作

回答 2 投票 0

为什么Spring Boot中的H2控制台登录后白屏?

我正在使用 Spring Boot 1.4.1 和 H2 数据库。 我已按照参考指南中的说明启用了 H2 控制台,方法是将以下几行添加到我的 application.properties 文件中: spring.h2.cons...

回答 5 投票 0

org.springframework.dao.DataIntegrityViolationException:无法执行语句; SQL [不适用];约束 [“PUBLIC.TO_DO(ID) 上的主键]

我正在使用 Java、Spring boot 和 H2 DB 以及 Data JPA 制作一个新的待办事项列表后端应用程序。我正在尝试插入新记录,但无法这样做,因为它正在检测重复的主/唯一键...

回答 1 投票 0

Spring 启动测试用例失败 - java.lang.IllegalStateException: 无法加载 ApplicationContext

我是 Spring Boot 新手,我正在使用 Spring Boot 3.2.8。我在调试存储库测试时遇到了困难。测试及其组件中的应用程序上下文似乎有问题...

回答 1 投票 0

使用数据库 H2 在 Spring Boot 中进行测试

我正在尝试在测试中使用 H2 数据库在 Spring Boot api 上运行测试,但是,当尝试运行测试时,系统使用主资源中的 application.properties 而不是...

回答 2 投票 0

未找到 Docker 主机

我有两个正在运行的 docker 容器,一个带有 Tomcat,一个带有 H2 数据库。 为了构建容器,我使用 docker compose build 和以下 compose.yml: 服务: 雄猫: 构建:t...

回答 1 投票 0

为什么数据库是空的?

我尝试使用 Intellij 社区版创建内存中的 H2 数据库。 以下是POM.xml中的依赖 我尝试使用 Intellij 社区版创建内存中的 H2 数据库。 以下是POM.xml中的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> 但是,当我运行代码时,我收到一条错误消息,指出数据库为空。 以下是我尝试将其对象保存在数据库中的类: @Entity @Table(name = "A") class Coffee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; @Column(nullable = false,columnDefinition = "TEXT") private String name; public A(String name){ this.name = name; } public A() { } public String getId(){ return id; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public void setId(String id){ this.id = id; } } 以下是一个简单的休息控制器,用于从数据库保存和检索 @Repository interface ARepository extends CrudRepository<A,String> {} @RestController @RequestMapping("/initial") class DBSample { @Autowired private final ARepository zrepository; RESTApiDBController(ARepository zRepository) { this.zRepository = zRepository; this.zRepository.saveAll(new A("a"),new A("b"), new A("c")); } } 但是,我遇到了例外: 原因:org.hibernate.exception.SQLGrammarException:无法准备语句[找不到表“A”(此数据库为空); SQL语句: 插入(名称,id)值(?,默认)[42104-224]] [插入(名称,id)值(?,默认)] 以下是我的application.properties文件 spring.application.name=database # H2 database configuration spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= # Enable automatic table creation spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect # H2 console (optional, for manual inspection) spring.h2.console.enabled=true spring.h2.console.path=/h2-console spring.jpa.hibernate.ddl-auto=update 不创建表,它期望它们已经存在。 如果您希望 Spring Jpa 为您创建 A 表,可以使用 spring.jpa.hibernate.ddl-auto=create每次都尝试创建它 或者更好的是,在开发阶段,使用: spring.jpa.hibernate.ddl-auto=create-drop,以便在应用程序关闭时创建表并删除表。 并不是说,对于生产,您应该使用 spring.jpa.hibernate.ddl-auto=update 并已为应用程序预先配置了数据库。

回答 1 投票 0

如何导出Java中的数据库应用程序以使其正常工作

几周前我提出了一个关于“如何将数据库嵌入到Java中”的问题。 感谢你,我成功地用 H2 db 做到了这一点。我制作了一个简单的应用程序,您可以在插入时插入姓名......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.