小编典典

MySQL:如何将varchar(255)UNIQUE列更改为UNIQUE Text NOT NULL?

sql

当前列是VARCHAR(255)NOT NULL,那么如何将其更改为TEXT NOT NULL?

注意:要更改其属性类型的列是另一列的UNIQUE KEY组合。例如

唯一键(名称,说明)

列描述当前位于varchar(255)中。因此无法更改:

错误1170(42000):在密钥规范中使用的BLOB / TEXT列’description’没有密钥长度

我需要它是TEXT,否则我需要重新创建整个东西?我已经有了一些乏味而重要的数据。重新创建会很麻烦。


阅读 199

收藏
2021-03-23

共1个答案

小编典典

您是否要将TEXT列用作UNIQUE KEY的一部分?效率很低!不要那样做!我强烈建议您:

  • 添加其他名为列的列 'description_hash' char(32) not null default ''
  • description字段的哈希值存储到其中。对于前。description_hash=MD5(description)
  • 将密钥更改为 UNIQUE KEY (name, description_hash)

当然,您需要使代码中的description_hash列保持 最新状态,但是请参见-
在大多数情况下,只需要很少的代码更改即可。或者,您可以使用触发器来处理此问题。

2021-03-23