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

时间:2017-01-30 07:25:49

标签: mysql spring jdbc spring-boot h2

我有一个带有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。我怎么能得到它?

1 个答案:

答案 0 :(得分:2)

schema.sql 用于创建表(CREATE TABLE,...),而不是用于插入记录。我不知道你是如何创建表的,但我猜他们已经创建了或者你正在使用Hibernate生成DDL选项之类的东西。

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

有关此内容的更多信息,请参阅documentation