当前位置: 首页 > 面试题库 >

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

夹谷野
2023-03-14
问题内容

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

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

唯一键(名称,说明)

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

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

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 是否可以将SQL Server 2008数据库中的列类型从更改为,而不必删除表并重新创建? 每当我尝试使用SQL Server Management Studio进行操作时,SQL Server Management Studio都会向我抛出一个错误-但是让我头疼的是,很高兴知道我是否可以更改类型而不必删除和创建。 谢谢 问题答案: 您应该能够使用TSQL做到这一点。 就像是

  • 问题内容: 我试图在事实发生后修改表使其成为主键列。我尝试了以下SQL,但收到语法错误通知。 我做错什么了吗? 问题答案:

  • 问题内容: 根据以下我用于常规mysql的代码,如何将其转换为使用mysqli? 像更改为一样简单吗? 问题答案: 首先要做的可能是将每个函数调用都替换为等效函数,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的。 为了解决这个问题,“ MySQLi扩展功能摘要” 绝对是有用的。 例如: 将被替换 将被替换为和/或,具体取决于上

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 对所有基于文本的字段使用通用varchar(255)有不利之处吗? 在MYSQL中,您可以为VARCHAR字段类型选择一个长度。可能的值为1-255。 但是,如果使用最大值而不是VARCHAR(20)的VARCHAR(255),它的优点是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。 大小(字节)=长度+1 因此,如

  • 我使用并有一个MySql db表,该表是用以下方式创建的:

  • 我试图从一个表创建一个视图,并将其中一个列类型从varchar更改为DateStamp。 我的如下所示: 如何实现列具有datestamp格式的视图的结果? 谢谢你的建议。