【问题标题】:Hibernate - does not create table on Ubuntu mysql when @Column(length= 40000) is used休眠 - 使用 @Column(length= 40000) 时不在 Ubuntu mysql 上创建表
【发布时间】:2017-01-06 13:55:50
【问题描述】:

我正在将应用程序从 Windows 移动到 ubuntu 服务器。应该映射到自动创建的表(通过 Hibernate)的类之一,在 Windows MySQL 上创建为没有问题的表,但在 Ubuntu MySQL 上没有创建。 所有其他类都创建为表没有问题。

在 tomcat 上的应用程序启动日志中,我没有错误 - 一切都是为了让 hibernate 变得更好。还创建了另一个表中的外键。

其他实体中唯一不存在的是'@Column(length= 40000)',但由于这个注释,它似乎不可能崩溃..

我已尝试删除其他表 - 它们会自动重新创建而没有问题..

有我的实体类的代码:

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

@Entity
public class ConsultationHrm {

    @Id
    @GeneratedValue
    private Long id;

    @Column(length= 40000)
    private String hrmMeasurements;

    public Long getId() {
        return id;
    }

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

    public String getHrmMeasurements() {
        return hrmMeasurements;
    }

    public void setHrmMeasurements(String hrmMeasurements) {
        this.hrmMeasurements = hrmMeasurements;
    }

}

您有什么想法,我可以从哪里找到问题的根源?

编辑:

我已经删除了一个@Column 注释并部署在 server-table 上已成功创建。当我删除了一个表并使用@Column 注释返回类时,表再次没有创建......

现在知道如何处理了吗? ..默认大小对我来说是不够的:-(

windows和ubuntu上的Mysql版本:

5.7.16-0ubuntu0.16.04.1

5.7.11-日志

【问题讨论】:

    标签: java mysql windows hibernate ubuntu


    【解决方案1】:

    似乎问题出在 MySQL 数据库中。

    在我的 windows 版本中,将列更改为 VARCHAR(40000) 没有问题。 在我的 ubuntu 版本中,我无法以相同的方式更改它。

    一些解决方案是使用:

    @Column(columnDefinition = "TEXT")
    private String hrmMeasurements;
    

    根据这个问题的答案Maximum length for MySQL type text 给了我们大约 65 k 个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2021-04-20
      • 2013-08-15
      相关资源
      最近更新 更多