【问题标题】:Java Hibernate -Mysql Schema-validation: wrong column type encountered in columnJava Hibernate -Mysql Schema-validation:列中遇到错误的列类型
【发布时间】:2021-08-09 21:46:44
【问题描述】:

我有一个连接到 MySql 8 数据库的 Springboot Java 8 应用程序。 应用程序调用一个 SQL 视图,该视图有一个 TEXT 类型的列。 (我不知道为什么它会得到那种类型,因为它是一个 ~40 字符长的串联字符串,就像其他获得 VARCHAR 类型的字符串一样。)。视图实体中的这些字段声明为字符串。

如果应用程序部署在 3 台计算机(2 个窗口,1 个 ubuntu 20.04)上,全部使用 mysql 8,它就可以工作。 但在另一台 Debian 10 机器上,它会在启动验证时写入这些错误:org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [meossz] in table [bejovoszamla_tetelek_view]; found [text (Types#LONGVARCHAR)], but expecting [longtext (Types#VARCHAR)]

我不知道为什么具有相同设置、相同版本 mysql (8.0.25) 的相同应用程序在两台机器上的工作方式不同。对于 Windows 机器,我刚刚从 mysql 站点下载了最新版本。对于它工作的 Ibuntu 机器,我使用 apt-get 从 Ubuntu 存储库安装。 对于不工作的 Debian 机器,我使用了官方 repo.mysql.com 和 apt-get。

有什么问题?为什么它的工作方式不同?如何让 JPA 接受字符串字段的所有 SQL 结果数据类型?

【问题讨论】:

  • 架构是如何创建的?
  • 数据库脚本。但是所有机器上的所有数据库都是用相同的脚本创建的。

标签: java mysql sql hibernate debian


【解决方案1】:

spring.jpa.hibernate.use-new-id-generator-mappings=false 到 application.properties 解决了这个问题。

但我仍然不明白为什么只在这台机器上需要它,而在其他机器上不需要它?

【讨论】:

    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2021-04-19
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2017-04-14
    相关资源
    最近更新 更多