java - Spring boot - MySQL 设置不起作用

标签 java mysql spring intellij-idea spring-boot

我正在尝试使用 Spring boot 和 MySQL 开发应用程序。正如文档所说,首先我使用 Intelij Idea 使用 Spring initializr 创建了项目,配置了 application.properties 文件,并编写了 schema-mysql.sql 文件和 data-mysql.sql 文件。运行项目后,发现mysql数据库中没有表,也没有数据。我的配置有什么问题?请帮忙。

application.properties file,

spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false
spring.datasource.username=root
spring.datasource.password=password

spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

spring.datasource.schema=schema-mysql.sql
spring.datasource.data=data-mysql.sql

dependencies in pom.xml file,

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

schema-mysql.sql file,

CREATE TABLE IF NOT EXISTS `SOL16_USERS` (
  `USERNAME` VARCHAR(200) NOT NULL,
  'PASSWORD' VARCHAR(200) NOT NULL,
  PRIMARY KEY (`USERNAME`)
);

CREATE TABLE IF NOT EXISTS 'SOL16_PRIVILEGES' (
  'PRIVILEGE_ID' INT(2)      NOT NULL,
  'PRIVILEGE'    VARCHAR(15) NOT NULL,
  PRIMARY KEY ('PRIVILEGE_ID')
);

CREATE TABLE IF NOT EXISTS 'SOL16_USER_PRIVILEGES' (
  'USERNAME'     VARCHAR(200) NOT NULL,
  'PRIVILEGE_ID' VARCHAR(2)   NOT NULL,
  PRIMARY KEY ('USERNAME')
);

And the file/directory structure is,

src
|----main
|    |----java
|    |----resources
|    |    |----static
|    |    |----templates
|    |    |----application.properties
|    |    |----data-mysql.sql
|    |    |----schema-mysql.sql

最佳答案

作为Spring引导documentation提到,解决我的问题的是将 spring.datasource.platform 添加到 application.properties。这就是我使用 schema-{platform}.sqldata-{platform}.sql 初始化模式所缺少的。

{platform} = value of spring.datasource.platform

所以我最终的 application.properties 文件是,

spring.datasource.url = jdbc:mysql://localhost:3306/testdb?useSSL=false
spring.datasource.username = root
spring.datasource.password = password

spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto = validate
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

spring.datasource.platform=mysql
spring.datasource.schema=schema-mysql.sql
spring.datasource.data=data-mysql.sql
spring.datasource.initialize=true
spring.datasource.continue-on-error=true

关于java - Spring boot - MySQL 设置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40247283/

相关文章:

java - 从不同的可执行文件动态添加作业到正在运行的 Quartz 调度程序

mysql - 在特定时间内启用mysql慢查询日志

php - Laravel 连接不同数据库中的两个表

spring - 运行 Spring Session + Spring Boot 应用程序时出现运行时错误

java - 使用 Spring 的电子邮件客户端

java - hibernate persist 尝试使用现有 id 创建对象失败

java - 如何更改下面的代码以避免意外的类型错误(必需 : variable; found: value)?

java - Android Studio 禁用点击声音

java - PriorityQueue.poll() 调用 compareTo()?

mysql内连接一张表两列