【问题标题】:How to make the connection between the mysql database and springboot application如何在mysql数据库和spring boot应用之间建立连接
【发布时间】:2019-10-20 14:59:52
【问题描述】:

我在模式名称 test_schema 中创建了一个表 people。我已经从 mysql 工作台中的 DATABASE > CONNECT TO DATABASE 连接了数据库。然后我试图与之建立联系,但这似乎不起作用。 顺便说一句,我已经从 github 克隆了它并尝试在这里运行我的数据库。

我尝试查看状态,但显示正在运行,但未从数据库中获取数据。

application.yml

  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/persons
    username: root
    password: users
  jpa:
    hibernate.ddl-auto: null
    generate-ddl: true
    show-sql: true```


UsersRepository.java

package com.techprimers.db.repository;

import com.techprimers.db.model.Users;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UsersRepository extends JpaRepository<Users, Integer> {
}

Users.java

package com.techprimers.db.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Users {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "token")
    private String token;
    @Column(name = "name")
    private String name;
    @Column(name = "post")
    private Integer post;

    public Users() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPost() {
        return post;
    }

    public void setPost(Integer post) {
        this.post = post;
    }


}

UsersResources.java

package com.techprimers.db.resource;

import com.techprimers.db.model.Users;
import com.techprimers.db.repository.UsersRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping(value = "/rest/users")
public class UsersResource {

    @Autowired
    UsersRepository usersRepository;

    @GetMapping(value = "/all")
    public List<Users> getAll() {
        return usersRepository.findAll();
    }

}

SpringBootMysqldbApplication.java

package com.techprimers.db;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@EnableJpaRepositories(basePackages = "com.techprimers.db.repository")
@SpringBootApplication
public class SpringBootMysqldbApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMysqldbApplication.class, args);
    }
}

结果应该是表格元素,但显示的是 Whitelabel 错误页面。我不知道我做错了什么,因为没有什么可做的。我只是根据我的需要修改了代码,但我认为我以某种方式弄乱了数据库连接,或者我做错了数据库连接。 提前致谢。

【问题讨论】:

  • 我希望您的数据库凭据是正确的。尝试在您的 UsersRepository 类上方添加 @Repository 注释。否则你不能自动装配 UsersRepository。
  • @Vimukthi_R 仍然无法正常工作。我的数据库凭据是正确的,对此没有问题。用户名和密码正确。
  • 您是否遇到任何错误或异常?
  • @Vimukthi_R 什么都没有,它正在运行和执行,就像没有错误一样。只有响应不是预期的。

标签: java mysql spring-boot jpa


【解决方案1】:

不幸的是,我还不能发表评论,但我认为您的数据库从 MySQL 5.7.5 开始默认强制执行 ssl,但默认情况下对客户端不是强制性的。请检查此网址 jdbc:mysql://localhost:3306/persons?useSSL=false

正如 Avi 所提到的,如果您的数据库是 test_schema,请将其写入 url 而不是 person

如果有问题,请在问题中提供错误和例外情况

Link how to handle ssl in mysql

Stackoverflow spring and mysql ssl question

【讨论】:

  • 运行这些代码后也没有错误或异常。这就是让这变得更加困难的原因。
【解决方案2】:

我注意到您说 TABLE NAME 是“PERSONS”,但在 url 中您提到了作为数据库名称

jdbc:mysql://${DB_SERVER_NAME}:${DB_PORT}/${DB_DATABASE}:currentSchema=${DB_SCHEMA};

这是jdbc:mysql://localhost:3306/&lt;db-name&gt;

检查一次

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2020-07-06
    • 1970-01-01
    • 2019-06-16
    • 2011-01-19
    • 2015-02-11
    • 2018-05-12
    相关资源
    最近更新 更多