我正在尝试使用REST DB和Spring Boot创建一个非常简单的-based API。
除了import.sql文件中的数据插入之外,一切看起来都很好。
尽管模式将默认值指定为Y和NOT NULL (请参阅下面的图像),但表中的Y列不会填充数据。

src/main/resources/schema.sql
DROP TABLE IF EXISTS COUNTRY;
CREATE TABLE IF NOT EXISTS COUNTRY(
COUNTRY_ID SERIAL PRIMARY KEY,
COUNTRY_NAME VARCHAR(100) NOT NULL,
ISO_ALPHA2_CODE VARCHAR(2) NOT NULL,
ISO_ALPHA3_CODE VARCHAR(3) NOT NULL,
ISO_NUMERICAL_CODE INTEGER NOT NULL,
ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL
);src/main/resources/import.sql
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Afghanistan','AF','AFG','4');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Aland Islands','AX','ALA','248');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Albania','AL','ALB','8');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Algeria','DZ','DZA','12');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('American Samoa','AS','ASM','16');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Andorra','AD','AND','20');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Angola','AO','AGO','24');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Anguilla','AI','AIA','660');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Antarctica','AQ','ATA','10');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Antigua and Barbuda','AG','ATG','28');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Argentina','AR','ARG','32');
INSERT INTO COUNTRY (COUNTRY_NAME,ISO_ALPHA2_CODE,ISO_ALPHA3_CODE,ISO_NUMERICAL_CODE) VALUES ('Armenia','AM','ARM','51');application.yml
spring:
application:
name: country-service
#Datasource settings
datasource:
url: jdbc:h2:file:~/test
username: sa
password:
driver-class-name: org.h2.Driver pom.xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>发布于 2017-11-21 22:50:57
我认为Spring正在执行ddl=createDrop,在应用程序结束后数据是否会保留呢?在您的validate中指定application.yml。我在查找答案时看到的一件事是,缺省值是在空之后指定的。但是,注释中的人员对于模式绝对是正确的,如果它真的是NOT NULL,h2会在尝试将列值设置为null时抛出错误。
那肯定是弹簧引导自动配置..。
You can set spring.jpa.hibernate.ddl-auto explicitly and the standard Hibernate property values are none, validate, update, create, create-drop. Spring Boot chooses a default value for you based on whether it thinks your database is embedded (default create-drop) or not (default none).
默认情况下创建模式,运行应用程序,然后删除它。如果计划自己创建架构,请选择“无”或“验证”。
https://stackoverflow.com/questions/47423688
复制相似问题