Flask-SQLAlchemy指定键太长

时间:2017-09-10 23:58:12

标签: python mysql sql sqlalchemy flask-sqlalchemy

我有以下Flask-SQLAlchemy架构:

class User(db.Model, UserMixin):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)

    username = db.Column(db.String(64), nullable=False, unique=True)
    password = db.Column(db.String(255), nullable=False, server_default="")

    email = db.Column(db.String(254), nullable=False, unique=True)
    confirmed_at = db.Column(db.DateTime())

    is_enabled = db.Column(db.Boolean(), nullable=False, default=False)

    def is_active(self):
        return self.is_enabled

哪个生成SQL(我正在使用MySQL):

CREATE TABLE users (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    username VARCHAR(64) NOT NULL, 
    password VARCHAR(255) NOT NULL DEFAULT '', 
    email VARCHAR(254) NOT NULL, 
    confirmed_at DATETIME, 
    is_enabled BOOL NOT NULL, 
    PRIMARY KEY (id), 
    UNIQUE (username), 
    UNIQUE (email), 
    CHECK (is_enabled IN (0, 1))
)

然而,这给了我错误“指定的密钥太长;最大密钥长度是767字节”。

请注意,Can't create_all Flask-SQLAlchemy - specified key was too long的副本;该问题建议将唯一列长度缩短为<255个字符,我试过没有成功。

如果可能,我希望将电子邮件字段保留为254个字符,因为这是规范定义的最大长度。

0 个答案:

没有答案