猿问

动态更改数据库列类型

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

该服务正在使用 spring --> jpa、hibernate 并与 mysql 数据库对话。

该实体具有映射属性,我们称之为 foobar,声明为字符串。

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

  • java实体: String foobar

  • MySQL 列: varchar(255) foobar

我想做一个表修改,所以它会是这样的:

  • java实体: String foobar

  • MySQL 列: longtext foobar

问题

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


烙印99
浏览 97回答 1
1回答

人到中年有点甜

理论上我会说“是”,变化应该是透明的。毕竟这两种类型在 JDBC 中都由相同的java.sql.Types.VARCHAR类型表示。但是——这是理论——而且由于您的申请似乎非常关键,我不会盲目相信该理论。在 DEV 或 TEST 环境中做一个简单的测试就会给你答案。只要确保您使用完全相同的:数据库版本,JPA版本,休眠版,JVM 版本,应用版本,图书馆,等等。
随时随地看视频慕课网APP

相关分类

Java
我要回答