Spring boot / Hibernate не может создать таблицу - PullRequest
0 голосов
/ 30 сентября 2018

Я получаю это предупреждение, когда пытаюсь запустить приложение для весенней загрузки:

2018-09-30 07:34:23.097  INFO 59360 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
Hibernate: create table social_link (author_username varchar(255) not null, type varchar(255) not null, value varchar(255), primary key (author_username, type)) engine=MyISAM
2018-09-30 07:34:24.067  WARN 59360 --- [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

Странно то, что я могу без проблем выполнить инструкцию SQL через инструментальные средства SQL, и после этого все работает нормально.Вот сущность, которая отвечает за эту таблицу:

@Entity
public class SocialLink {

    @EmbeddedId
    private SocialLinkKeyEmbeddable id = new SocialLinkKeyEmbeddable();
    private String value;
    @ManyToOne
    @MapsId("author_username")
    @JoinColumns({
            @JoinColumn(name="author_username", referencedColumnName="author_username")
    })
    private Author author;

    //Getters and setters
}

@Embeddable
public class SocialLinkKeyEmbeddable implements Serializable {

    @Column(name = "author_username")
    private String author_username;
    private String type;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getAuthor_username() {
        return author_username;
    }

    public void setAuthor_username(String author_username) {
        this.author_username = author_username;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }
}

public interface SocialLinkRepository extends CrudRepository<SocialLink, SocialLinkKeyEmbeddable> {
}

1 Ответ

0 голосов
/ 30 сентября 2018

Проблема была с длиной ключа.MySQL делал вид, что он больше 1000 байт.Кажется, это общая проблема с механизмом хранения MyISAM.Чтобы исправить это, я добавил:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect

в мой applicationaiton.properties, и теперь проблема исправлена.Использовал этот пост в качестве ссылки # 1071 - указанный ключ был слишком длинным;максимальная длина ключа 1000 байтов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...