gpt4 book ai didi

mysql - 如何在不使用 JOOQ 重新部署的情况下删除 mysql 列

转载 作者:行者123 更新时间:2023-11-30 21:26:15 26 4
gpt4 key购买 nike

我想在不重新部署应用程序的情况下从数据库中删除一列。

我正在为表格使用 JOOQ 生成的文件,并且我已经从代码中删除了该字段的所有使用,因此该字段没有“获取”或“设置”,但是当获取记录时,该字段仍在询问。因此,如果我删除该列,代码将会中断。

我正在考虑编辑 JOOQ 生成的文件,但不确定这是否有效,因为字段似乎在其中编号(可能基于它们在表中的索引)。

/**
* Setter for <code>database.person.email</code>.
*/
public void setEmail(String value) {
set(7, value);
}

/**
* Getter for <code>database.person.email</code>.
*/
public String getEmail() {
return (String) get(7);
}

最佳答案

您似乎在使用 selectFrom(Table) .它总是会从 Table.fields() 中生成一个明确的列列表在 SELECT 子句中,如果列列表是 jOOQ 已知的。 This should probably be better documented .

此行为(与生成 SELECT * 相对)的结果是:

  • 您可以在不重新生成 jOOQ 代码的情况下向表中添加一列
  • 你不能在不重新生成 jOOQ 代码的情况下从表中删除一列

然而,理想情况下,您应该始终在投影中使用明确的列列表,而不是投影所有列,除非您无论如何都需要其中的大部分列。这不仅可以防止这种问题在大多数情况下发生,还可以通过多种方式提高性能。

I am thinking about editing the JOOQ generated files, but unsure if this will even work as the fields seems to be numbered in there (maybe based on their index in the table).

如果编辑这些文件是一种选择,那么重新生成和重新部署也可能是一种选择。我建议不要手动编辑这些文件。如果必须,请确保同时编辑生成的 TableTableRecord 类,并调整所有 列索引。

关于mysql - 如何在不使用 JOOQ 重新部署的情况下删除 mysql 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com