当前列是 VARCHAR(255) NOT NULL,那么如何将其更改为 TEXT NOT NULL?
注意:要更改其属性类型的列是另一列的 UNIQUE KEY 组合。例如
唯一键(名称、描述)
列描述当前在 varchar(255) 中。因此无法更改:
ERROR 1170 (42000): BLOB/TEXT column 'description' used in key specification without a key length
我需要它是文本,否则我需要重新创建整个东西??我已经在其中获得了一些繁琐而重要的数据。重新创建会很麻烦。
最佳答案
您打算将 TEXT 列用作 UNIQUE KEY 的一部分吗? 这是非常低效的!不要那样做! 我强烈建议您:
- 添加额外的列,例如
'description_hash' char(32) not null default ''
- 将
description
字段的哈希值存储到其中。对于前。description_hash=MD5(描述)
- 将您的 key 更改为
UNIQUE KEY (name, description_hash)
当然,您需要使代码中的 description_hash
列保持最新,但如您所见 - 在大多数情况下,只需更改少量代码即可。
或者您可以使用触发器来处理它。
关于MySQL:如何将 varchar(255) UNIQUE 列更改为 UNIQUE Text NOT NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744617/