如何通过 Spring Boot Web App 即时创建 mysql 数据库和表

Posted

技术标签:

【中文标题】如何通过 Spring Boot Web App 即时创建 mysql 数据库和表【英文标题】:how to create mysql database and tables on the fly by spring boot web app 【发布时间】:2018-08-22 01:09:14 【问题描述】:

我认为可以通过 Spring Boot Web 应用程序创建数据库和表。如果我有一个带有 mysql 查询的文件来创建数据库、表,例如 sql_table.sql 文件。如果没有出口,如何使用生成数据库和表?

【问题讨论】:

dzone.com/articles/using-mysql-jdbc-driver-with-spring-boot 重复问题***.com/q/26367322/2887739 它只显示如何创建表。如何创建数据库?有可能吗? 您是否愿意在应用程序启动时创建数据库并在应用程序结束时删除?如果是,最好的方法是使用任何内存数据库,如 H2。当您处理不稳定且数量较少的数据时,此方案很有帮助。 没有。如果它不存在,我只想做第一次。如果它存在,我会使用它。否则,我将创建一个。 【参考方案1】:

我可以通过以下方式创建一个没有任何 SSL 警告的新数据库:-

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/aaa?createDatabaseIfNotExist=true&useSSL=true
spring.datasource.username=root
pring.datasource.password=devv
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

【讨论】:

【参考方案2】:

Spring Boot 从类路径的根目录加载 SQL 脚本。您必须在 application.yml 或 application.properties 文件中指定数据源属性。 您必须在数据源属性中指定您的数据库,如下所示:

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=test
spring.datasource.password=

test 是您的数据库。

【讨论】:

不确定是否可以动态创建数据库。使用 Mysql 你必须至少手动创建一个。 错误:- 错误 o.a.tomcat.jdbc.pool.ConnectionPool - 无法创建池的初始连接。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:unknown database 'test' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl .newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) Hibernate 不会创建数据库,除非您像 jdbc:mysql://db:3306/mydatabase?createDatabaseIfNotExist 那样明确指定它

以上是关于如何通过 Spring Boot Web App 即时创建 mysql 数据库和表的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Spring Boot web app 启动后会立即关闭?

如何使用Spring-boot处理越来越多的STOMP主题

没有 Web 环境的 Spring Boot OAuth2

使用 OpenID Connect Gluu 身份验证提供程序来保护 Spring Boot Web App 客户端

Spring Boot 2.x基础教程:使用 Thymeleaf开发Web页面

如何部署同一个Spring boot web 应用到不同的环境