Pre*_*ain 5 mysql sqldatatypes node.js sequelize.js
我正在使用sequelize ORM和mySQL数据库.
我有一个属性类型为TEXT的模型:
description: {
type: Sequelize.TEXT,
unique: true
},
Run Code Online (Sandbox Code Playgroud)
当我尝试为相应的模型创建表时,它给出一条错误消息:
未处理的拒绝SequelizeDatabaseError:ER_BLOB_KEY_WITHOUT_LENGTH:BLOB/TEXT列'描述'用于密钥规范而没有密钥长度
当与postgreSQL一起使用时,这很好用.我能想到的这个错误的可能原因可能是mySQL不支持TEXT数据类型,因此,我必须将其指定为LONGTEXT.
如果我的想法正确或有其他原因,如果有人可以提供帮助.
esmrkbr 是正确的,mySQL 不接受文本字段上的 UNIQUE KEY,您需要使用 VARCHAR 代替(请参阅:使文本列作为唯一键)。话虽如此,根据所使用的数据库,您可能需要明确指定 TEXT(或 BLOB)类型的大小。文档(http://docs.sequelizejs.com/en/latest/api/datatypes/)在这一点上非常简洁,除了代码链接之外,目前只有以下信息:
一个(无)限制长度的文本列。可用长度:小、中、长
您可以将大小作为字符串参数传递给类型。例如,要按照LONGTEXT您的需要定义它:
description: {
type: Sequelize.TEXT('long')
},
Run Code Online (Sandbox Code Playgroud)
lib/data-types.js 中的代码对 TEXT 的 SQL 具有以下映射(BLOB 也有类似的映射):
TEXT.prototype.toSql = function() {
switch (this._length.toLowerCase()) {
case 'tiny':
return 'TINYTEXT';
case 'medium':
return 'MEDIUMTEXT';
case 'long':
return 'LONGTEXT';
default:
return this.key;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6099 次 |
| 最近记录: |