繁体   English   中英

在创建表之前执行 schema.sql,在 schema.sql 中插入失败

[英]schema.sql executed before table creation, inserts in schema.sql fails

我有一个带有 Table 实体的项目。 我想从schema.sql运行一些 SQL 来更新我的表以进行测试。 但我发现 Spring 首先应用schema.sql然后创建带有@Table注释的表。 所以没有创建表,我收到错误消息:

嵌套异常是 org.h2.jdbc.JdbcSQLException:找不到表“BOOK”; SQL语句:

这是我的表:

@Entity
@Table(name="BOOK")
public class Book {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long bookId;
//and all getter and setters

这是scheam.sql

INSERT INTO book VALUES (1, 'Of Mice and Men', '1954-11-08', 100, 11.00);
INSERT INTO book VALUES (2, 'One Flew Over the Cuckoos Nest', '1973-11-08', 100, 15.00);
INSERT INTO book VALUES (3, 'For Whom the Bell Tolls', '1932-11-08', 100, 13.00);

所以我想先创建表,然后应用我的schema.sql 我怎么能得到呢?

schema.sql用于创建表( CREATE TABLE ,...),而不用于插入记录。 我不知道如何创建表,但是我想它们要么已经创建,要么正在使用Hibernate的generate DDL选项之类的东西。

无论如何,要在现有表中插入或更新记录,应使用data.sql 因此,在您的情况下,应将文件重命名为data.sql以使其正常工作。

有关此内容的更多信息,请参见文档

1.) 将文件重命名为 data.sql

2.) 将以下行添加到 application.properties:

spring.jpa.defer-datasource-initialization = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM