即时更改数据库列类型

时间:2018-08-29 12:43:32

标签: java mysql hibernate jpa jdbc

给定一个Java服务,该服务在理想情况下应该没有停机时间,我想在保持该服务处于活动状态的同时将表的列类型从varchar更改为longtext。

该服务正在使用spring-> jpa,进入休眠状态并与mysql数据库对话。

该实体具有已映射的属性,可以将其称为foobar,代号为String。

所以现在,它看起来像这样:

  • java实体:String foobar

  • MySQL列:varchar(255) foobar

我想做一个表修改,所以会像这样:

  • java实体:String foobar

  • MySQL列:longtext foobar

问题

如果我更改mysql列并保持java服务运行,它仍然能够读取/写入该列还是会抛出错误?

1 个答案:

答案 0 :(得分:1)

理论上我会说“是”,更改应该是透明的。所有这两种类型在JDBC中都用相同的java.sql.Types.VARCHAR类型表示。

但是-这是理论-而且由于您的申请似乎非常关键,所以我不会盲目相信该理论。

在DEV或TEST环境中进行简单测试将为您提供答案。

只需确保使用完全相同

  • 数据库版本
  • JPA版本,
  • 休眠版本
  • JVM版本,
  • 应用程序版本
  • 图书馆