【问题标题】:Spring Boot cannot create database table in mysql 5.7Spring Boot 无法在 mysql 5.7 中创建数据库表
【发布时间】:2022-01-25 11:47:55
【问题描述】:

我想在 mysql 服务器中使用该信息创建一个名为 dni 的表。

@Entity
public class Dni implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, updatable = false)
    private Long id;
    private String nombre;
    private String apellidos;
    private String direccion;
    private String fotoPerfil;
    private String codigoDni;
    private String fechaNacimiento;

    public Dni() {
    }

    public Dni(Long id, String nombre, String apellidos, String direccion, String fotoPerfil, String codigoDni, String fechaNacimiento) {
        this.id = id;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.direccion = direccion;
        this.fotoPerfil = fotoPerfil;
        this.codigoDni = codigoDni;
        this.fechaNacimiento = fechaNacimiento;
    }

    public Long getId() {
        return id;
    }

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

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getFotoPerfil() {
        return fotoPerfil;
    }

    public void setFotoPerfil(String fotoPerfil) {
        this.fotoPerfil = fotoPerfil;
    }

    public String getCodigoDni() {
        return codigoDni;
    }

    public void setCodigoDni(String codigoDni) {
        this.codigoDni = codigoDni;
    }

    public String getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(String fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    @Override
    public String toString() {
        return "Dni{" +
                "id=" + id +
                ", nombre='" + nombre + '\'' +
                ", apellidos='" + apellidos + '\'' +
                ", direccion='" + direccion + '\'' +
                ", fotoPerfil='" + fotoPerfil + '\'' +
                ", codigoDni='" + codigoDni + '\'' +
                ", fechaNacimiento=" + fechaNacimiento +
                '}';
    }
}

失败的查询:

1."创建表 dni (id bigint not null, apellidos varchar(255), codigo_dni varchar(255), direccion varchar(255), fecha_nacimiento varchar(255), foto_perfil varchar(255), nombre varchar(255) , 主键 (id)) engine=MyISAM"

2."创建表hibernate_sequence (next_val bigint) engine=MyISAM"

我尝试了什么:

--> 输入@Table(name = dni)

--> 把这个放在 pom.xml org.hibernate.dialect.MySQL5Dialect 上

--> 把这个放在 application.properties spring.jpa.properties.hibernate.globally_quoted_identifiers=true

这些都没有用

【问题讨论】:

    标签: java mysql spring-boot hibernate


    【解决方案1】:

    首先,当你只创建一个注解为@Entity,并且对手动数据库或H2数据库有足够的依赖时,Spring boot会创建一个与类名同名的表.

    解决方案

    添加 H2 数据库依赖项以获取 hibernate_sequence 表。您将在 pom.xml 中获得 H2 数据库依赖项,如下所示:

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    

    或者

    您可以为 MYSQL 添加依赖项并使用 application.properties 文件手动连接数据库

    pom.xml

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    

    application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/dnischema
    spring.datasource.username=root
    spring.datasource.password=root
    
    # Hibernate properties
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    # create, create-drop
    spring.jpa.hibernate.ddl-auto=update
    

    如果你使用上述步骤,首先使用命令create database dnischema在Mysql中创建一个数据库。

    使用此解决方案,您无需创建单独的表,spring boot 将为您创建表。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 1970-01-01
      • 2021-10-30
      • 2021-01-13
      • 2019-10-13
      • 2021-04-21
      • 2021-01-09
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多