如何在 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