如果springboot/JPA和SQL Server不存在数据库,如何创建数据库



我很惊讶没有找到一个SO问题来回答这个问题。我正在尝试将springboot/JPA应用程序连接到本地计算机上的SQL Server。我设置了应用程序,这样它就可以连接到数据库(如果数据库存在(,但如果我更改JDBC URL以创建数据库(如果它不存在(,那么它就会失败。以下是它失败时的属性。

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=testing;createDatabaseIfNotExist=true;
spring.datasource.username=hello
spring.datasource.password=Hello1234
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2008Dialect
spring.jpa.show-sql=true

以下是我在启动应用程序时收到的错误片段:

com.microsoft.sqlserver.jdbc.SQLServerException:用户登录失败"你好"。客户端连接ID:971a3369-258b-4713-bddc-cda559b9fe94,位于com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262(~[mssql-jdbc-8.4.0.jre11.jar:na]com.microsoft.sqlserver.jdbc.TDSTokenHandle

如果有人想知道我如何改变这一点,以便在数据库不存在的情况下创建数据库,我将非常感谢。谢谢你。

是的,你肯定可以用JPA为自动创建一个数据库

spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=testing;
createDatabaseIfNotExist=true;

行应更改为:

spring.datasource.url=jdbc:sqlserver://localhost:1433
/testing?createDatabaseIfNotExist=true

我不认为可以使用JPA创建数据库。它必须手动或以其他方式创建,但JPA不会为您这样做。

使用应用程序本身和使用相同的凭据创建数据库也是一种糟糕的做法。

在实践中,您的应用程序永远不应该创建数据库,所以大多数时候这并不是一个真正的问题(在sqlite3等小型数据库之外(。不同的数据库也会以不同的方式处理这种情况。

在您的情况下,我在文档中不认为这是一个有效的jdbc参数。我建议您使用独立于应用程序用户的特权用户提前创建数据库。

相关内容

  • 没有找到相关文章