我在C#中为MySQL数据库创建了一个MySQL迁移文件。我正在尝试在一个长文本列上创建一个索引,并且我知道您需要在一个索引中为长文本列指定一个长度。
有什么办法在代码中做到这一点吗?我有这个复合索引,其中Column2是长文本:
migrationBuilder.CreateIndex("idx_temp", "Table1", new[] { "Column1", "Column2" }, null, false, null);这在将迁移文件推送到数据库时失败了,因为缺少为Column2指定长度。我在CreateIndex方法上找不到任何允许您指定这一点的重载。
在这个上下文中,您在哪里指定长度?
谢谢!
发布于 2022-02-18 07:28:03
在MySQL中的文本/blob text/blob列上不能有唯一的索引。
如果希望在文本或BLOB字段上建立索引,则必须指定固定长度才能实现这一点。
来自MYSQL:http://dev.mysql.com/doc/refman/5.0/en/create-index.html
BLOB和TEXT列也可以进行索引,但必须给出前缀长度。
基本例子:
CREATE UNIQUE INDEX index_name ON misc_info (key(10));虽然你的桌子设计可能有问题。你最好把这个贴出来。通常你应该有这样的东西:
public class MyText
{
[Key]
public int Id { get; set; }
//leaving this blank it will give you nvarchar(MAX) or longtext basically
public string Txt { get; set; }
}不过要少用这个。将字符串保留为最大值在DBs中可能会有风险,
https://stackoverflow.com/questions/71169624
复制相似问题