我有以下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个字符,因为这是规范定义的最大长度。