带有sails-mysql的SailsJS 1.0中的ER_TOO_LONG_KEY

时间:2017-05-15 16:35:57

标签: sails.js

当我尝试sails lift

时,我的风帆出现了这个错误
info: ·• Auto-migrating...  (drop)
error: A hook (`orm`) failed to load!
error:
error: Error: ER_TOO_LONG_KEY: Specified key was too long; max key length is 767 bytes

我现在只有一个型号:

module.exports = {

    datastore: 'default',
    tableName: 'sci_user',
    attributes: {
        email: {
            type: 'string',
            required: true,
            unique: true
        },
        password: {
            type: 'string',
            required: true
        }
    }

这很简单,我从文档中得到了它。我不明白。这似乎是因为unique: true

1 个答案:

答案 0 :(得分:2)

这是由多种因素组合而来的,但最相关的是sails-mysql当前默认使用字符串属性的utf8mb4字符集,以允许使用表情符号和其他扩展字符。我们正在开发一个补丁,以使其可配置而非默认,但与此同时,最快的解决方法是直接为您的属性声明columnType

module.exports = {

datastore: 'default',
tableName: 'sci_user',
attributes: {
    email: {
        type: 'string',
        required: true,
        unique: true,
        columnType: 'varchar'
    },
    password: {
        type: 'string',
        required: true,
        columnType: 'varchar'
    }
}