我正在使用sequelize ORM和mySQL数据库 .
我有一个属性类型为 TEXT 的模型:
description: {
type: Sequelize.TEXT,
unique: true
},
当我尝试为相应的模型创建表时,它给出一条错误消息:
未处理的拒绝SequelizeDatabaseError:ER_BLOB_KEY_WITHOUT_LENGTH:BLOB / TEXT列'描述'用于密钥规范而没有密钥长度
当与postgreSQL一起使用时,这很好用 . 我能想到的这个错误的可能原因可能是mySQL不支持TEXT数据类型,因此,我必须将其指定为LONGTEXT .
如果我的想法正确或有其他原因,如果有人可以提供帮助 .
3 回答
您正在使用
unique: true
与数据类型TEXT
. 你不能使用它 . 你删除unique: true
并再试一次吗?esmrkbr是正确的,mySQL不接受TEXT字段上的UNIQUE KEY,你需要使用VARCHAR(参见:make text column as unique key) . 话虽这么说,根据所使用的数据库,您可能需要明确指定TEXT(或BLOB)类型的大小 . 文档(http://docs.sequelizejs.com/en/latest/api/datatypes/)在这一点上非常简洁,除了代码链接之外,目前只有以下信息:
您可以将大小作为字符串参数传递给类型 . 例如,要将其定义为
LONGTEXT
,您将需要:lib / data-types.js中的代码具有以下映射到TEXT的SQL(对于BLOB也有类似的映射):
像这样定义为字符串: