相关疑难解决方法(0)

H2内存数据库.表未找到

我有一个带有URL的H2数据库"jdbc:h2:test".我使用创建一个表CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));.然后我使用这个(空)表选择所有内容SELECT * FROM PERSON.到现在为止还挺好.

但是,如果我将URL更改为"jdbc:h2:mem:test",唯一的区别是数据库现在只在内存中,这给了我一个org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154].我可能在这里遗漏了一些简单的东西,但任何帮助都会受到赞赏.

java database h2

170
推荐指数
11
解决办法
13万
查看次数

在 liquibase 开始工作之前,如何在 Postgres DB 中创建模式?

我有独立的应用程序。它在 java、spring-boot、postgres 上,并且有 liquibase。

我需要部署我的应用程序并且 liquibase 应该创建所有表等。但它应该在不公开的自定义模式中进行。liquibase 的所有服务表(databasechangelog 和 databasechangeloglock)也应该在自定义模式中。如何在 liquibase 开始工作之前在 DB 中创建我的模式?我必须在我的应用程序中在部署时、在配置中或类似内容中执行此操作。无需对数据库进行任何手动干预。

应用程序属性:

spring.datasource.jndi-name=java:/PostgresDS
spring.jpa.properties.hibernate.default_schema=my_schema
spring.jpa.show-sql = false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.datasource.continue-on-error=true
spring.datasource.sql-script-encoding=UTF-8

liquibase.change-log = classpath:liquibase/changelog-master.yaml
liquibase.default-schema = my_schema
Run Code Online (Sandbox Code Playgroud)

更新:

当 liquibase 启动时,它会创建两张表 databasechangelogs 和一张表。之后,liquibase 开始工作。但是我想要 liquibase liquibase.default-schema = my_schema,但是当 liquibase 开始工作时它不存在并且它是一个错误:异常是 liquibase.exception.LockException: liquibase.exception.DatabaseException: ERROR: schema "my_schema" does not exist

我希望 liquibase 在自定义架构中工作,而不是在公共场合:

liquibase.default-schema = my_schema
Run Code Online (Sandbox Code Playgroud)

但是在 liquibase 可以做到之前,必须创建模式。Liquibase 无法执行此操作,因为它尚未启动,并且启动时需要架构。恶性循环。

java postgresql spring liquibase

12
推荐指数
4
解决办法
5853
查看次数

如何通过Spring Boot在MongoDB中加载初始数据?

是否可以MongoDB使用src/main/resources/data.sql或通过任何其他文件在数据库中加载初始数据?

据我所知,data.sql用于SQL数据库的,而MongoDB一个NOSQLDB.但只是想知道是否有任何等同data.sqlNOSQL数据库的.

谷歌搜索时我发现了这个SO链接(Spring Boot - 正在加载初始数据),它正在寻找我正在寻找的东西,但它仍然不是一个独立的文件data.sql.

java mongodb nosql spring-data-mongodb spring-boot

9
推荐指数
2
解决办法
4285
查看次数

java h2内存数据库错误:找不到表

我试过谷歌搜索,但几乎所有这类问题的解决方案是添加;DB_CLOSE_DELAY=-1,但它并没有为我解决任何问题.

这是我的测试课

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Main.class})
public class Testas {

    @Autowired
    @Qualifier("managerImplementation")
    private ClassifierManager manager;

    @Test
    public void testManager(){
        ClassifierGroupEntity cge = new ClassifierGroupEntity();
        manager.saveClassifierGroup(cge);
    }
}
Run Code Online (Sandbox Code Playgroud)

经理班

@Service("managerImplementation")
public class ClassifierManagerImpl implements ClassifierManager{

    @Autowired
    private ClassifierGroupEntityRepository groupEntityRepository;

    @Autowired
    private ClassifierEntityRepository entityRepository;

    @Autowired 
    private ClassifierValueEntityRepository valueEntityRepository;

    @Override
    public ClassifierGroupEntity getClassifierGroup(long id) {
        return groupEntityRepository.findOne(id);
    }

    @Override
    public ClassifierGroupEntity getClassifierGroup(String code) {
        return groupEntityRepository.findByCode(code);
    }

    @Override
    public ClassifierGroupEntity saveClassifierGroup(ClassifierGroupEntity entity) {
        return groupEntityRepository.save(entity);
    }

    @Override
    public void deleteClassifierGroup(long id) …
Run Code Online (Sandbox Code Playgroud)

java spring jdbc h2

7
推荐指数
3
解决办法
2万
查看次数

如何在应用程序启动/加载期间执行SQL插入查询以填充数据库?

我想在加载应用程序期间将一些数据加载到mysql数据库中.我正在使用Hibernate来管理应用程序的数据库.我可以通过使用Bootstrap在groovy中完成它,但我想用Java实现它.我想提一下,它是基于Spring MVC的Web应用程序.

在互联网上搜索时,我发现但是使用名为import_file的hibernate属性,我可以实现它,但我正在寻找替代路线.

java sql spring hibernate

5
推荐指数
1
解决办法
7755
查看次数

在Spring Boot下执行H2

我使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行JAR文件生成了一个Spring Boot Web应用程序.

使用的技术:

Spring Boot 1.4.2.RELEASE,Spring 4.3.4.RELEASE,Thymeleaf 2.1.5.RELEASE,Tomcat Embed 8.5.6,Maven 3,Java 8

这是我在启动数据库时调用的bean

@SpringBootApplication
@EnableAutoConfiguration
@Import({SecurityConfig.class})
public class BookApplication {

    public static void main(String[] args) {
        SpringApplication.run(BookApplication.class, args);
    }
}



@Configuration
public class PersistenceConfig {

...

    /**
         * Creates an in-memory "books" database populated 
         * with test data for fast testing
         */
        @Bean
        public DataSource dataSource(){
            return
                (new EmbeddedDatabaseBuilder())
                .addScript("classpath:db/H2.schema.sql")
                .addScript("classpath:db/H2.data.sql")
                .build();
        }
Run Code Online (Sandbox Code Playgroud)

当我执行此插入时

CREATE TABLE IF NOT EXISTS t_time_lapse (
      id          bigint  PRIMARY KEY,
      name        varchar(50) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql spring spring-mvc h2 spring-boot

5
推荐指数
1
解决办法
840
查看次数

无法在 Spring Boot 应用程序中从 data.sql 导入 sql 插入脚本数据

我有一个非常基本的Spring Boot应用程序,schema.sql它分别data.sql创建H2 DB模式和导入数据。

我的schema生成正常,H2 DB但由于某种原因,数据没有导入。我看到0表中的记录。

我也没有看到任何错误。

看起来像是配置问题。请指导。

在此输入图像描述

pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/>
    </parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

应用程序属性

hibernate.jdbc.batch_size=500
hibernate.show_sql=true
hibernate.format_sql=true

spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/~/h2-dbs/demo-db
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Run Code Online (Sandbox Code Playgroud)

src/main/resources/schema.sql

drop table env if exists;
create table env (
  id        int             auto_increment      primary key,
  name      varchar(250)    not null            default 'DEV',
  category  varchar(250)    not null            default …
Run Code Online (Sandbox Code Playgroud)

java h2 spring-data spring-data-jpa spring-boot

5
推荐指数
1
解决办法
1881
查看次数

JpaRepository findAll()返回空结果

JpaRepository findAll()方法返回空结果。我正在尝试通过使用Spring-boot,h2数据库和jpa来实现rest服务。

这是我的 schema.sql

CREATE TABLE IF NOT EXISTS `City` (
  `city_id` bigint(20) NOT NULL auto_increment,
  `city_name` varchar(200) NOT NULL,
PRIMARY KEY (`city_id`));
Run Code Online (Sandbox Code Playgroud)

我的data.sql文件包括:

INSERT INTO City (city_id,city_name) VALUES(1,'EDE');
INSERT INTO City (city_id,city_name) VALUES(2,'DRUTEN');
INSERT INTO City (city_id,city_name) VALUES(3,'DELFT');
Run Code Online (Sandbox Code Playgroud)

City实体:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "City")
public class City {

  @Id
  @GeneratedValue
  @Column(name = "city_id")
  private Long cityId;

  @Column(name = "city_name")
  private String cityName;

  public Long getCityId() …
Run Code Online (Sandbox Code Playgroud)

java spring h2 spring-data-jpa

4
推荐指数
1
解决办法
1万
查看次数

在 Spring Boot 中默认创建管理员帐户

我有一个用户实体:

用户.java

@Entity
public class user {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@NotBlank
private String firstname;
...
Run Code Online (Sandbox Code Playgroud)

当我第一次部署应用程序时,它会在我的数据库中创建这个表。

我的问题:有没有办法在创建表user时创建一个带有名字的管理员用户和表?

spring spring-mvc spring-boot

3
推荐指数
1
解决办法
3475
查看次数