Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “炼金术”指定的密钥太长_Python_Mysql_Sql_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python “炼金术”指定的密钥太长

Python “炼金术”指定的密钥太长,python,mysql,sql,sqlalchemy,flask-sqlalchemy,Python,Mysql,Sql,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, s

我有以下炼金术模式:

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):

但是,这会导致错误“指定的密钥太长;最大密钥长度为767字节”


请注意,这不是的副本;这个问题建议将独特的列长度缩短为“我已经尝试过了,但没有成功。”请发布您尝试过的内容-这可能是我们需要的help@DaniSpringer如果你想知道细节,我试着将密码和电子邮件字段缩短到214。你的编码是什么?254个字符,每个字符最多4个字节(utf8mb4),等于1016个字节。@IljaEveriläI不知道。我想,不管默认的MySQL编码是什么,“我已经尝试过了,但没有成功。”请发布您尝试过的内容——这可能是我们需要的help@DaniSpringer如果你想知道细节,我试着将密码和电子邮件字段缩短到214。你的编码是什么?254个字符,每个字符最多4个字节(utf8mb4),等于1016个字节。@IljaEveriläI不知道。我想不管默认的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))
)