如何在 Spring 自动创建数据库后 运行 DDL?
How to run DDL after Spring auto create db?
我的问题很简单。如何在 Spring 的自动模式创建后 运行 任何 DDL 语句?
我在我的应用程序中设置了以下内容-test.properties 以从实体 Java 类.
自动创建数据库模式
spring.jpa.hibernate.ddl-auto=create-drop
我想在自动创建架构后更改一列中一列的数据类型 table。
我尝试在类路径中添加一个 schema.sql 文件,但这没有帮助。
请帮忙。
您在脚本中指定的脚本将在创建数据库之前运行。
所以当你执行 Alter table 命令时,你会得到 Table not found 类的错误。
我的建议是仅通过 SQL 文件创建数据库并设置
spring.jpa.hibernate.ddl-auto=none 所以系统不会创建自动数据库。
现在制作您的 SQL 文件 运行,您可以创建架构并根据平台对其进行初始化。平台值为 spring.datasource.platform。现在您可以创建文件 schema-${platform}.sql 和 data-${platform}.sql ,它们由 Spring Boot 处理。它允许您在必要时选择数据库特定的脚本。您可以选择数据库(平台)的供应商名称,如 hsqldb、h2、oracle、mysql、postgresql 等。
我用 postgres 测试过,它对我有用。 Sql 文件名为 schema-postgres.sql
在 application.properties 文件
中设置以下属性
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/poc
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always
我的问题很简单。如何在 Spring 的自动模式创建后 运行 任何 DDL 语句?
我在我的应用程序中设置了以下内容-test.properties 以从实体 Java 类.
自动创建数据库模式spring.jpa.hibernate.ddl-auto=create-drop
我想在自动创建架构后更改一列中一列的数据类型 table。
我尝试在类路径中添加一个 schema.sql 文件,但这没有帮助。
请帮忙。
您在脚本中指定的脚本将在创建数据库之前运行。 所以当你执行 Alter table 命令时,你会得到 Table not found 类的错误。 我的建议是仅通过 SQL 文件创建数据库并设置 spring.jpa.hibernate.ddl-auto=none 所以系统不会创建自动数据库。
现在制作您的 SQL 文件 运行,您可以创建架构并根据平台对其进行初始化。平台值为 spring.datasource.platform。现在您可以创建文件 schema-${platform}.sql 和 data-${platform}.sql ,它们由 Spring Boot 处理。它允许您在必要时选择数据库特定的脚本。您可以选择数据库(平台)的供应商名称,如 hsqldb、h2、oracle、mysql、postgresql 等。
我用 postgres 测试过,它对我有用。 Sql 文件名为 schema-postgres.sql 在 application.properties 文件
中设置以下属性 spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/poc
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always