【问题标题】:sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'password' at row 1")sqlalchemy.exc.DataError:(pymysql.err.DataError)(1406,“第 1 行的“密码”列数据太长”)
【发布时间】:2020-11-21 19:05:09
【问题描述】:
def create_user(db: Session, user: UserCreate):
    hashed_password= bcrypt.hashpw(user.password.encode('utf-8'), bcrypt.gensalt())
    db_user= User(email=user.email, password=hashed_password, lname=user.lname, fname=user.fname)
    print('---->', db_user)
    db.add(db_user)
    db.commit()
    return db_user

@app.post('/api/users', response_model= User)
def signup(user_data: UserCreate, db: Session= Depends(get_db)):
    user= get_user_by_email(db, user_data.email)
    if user:
        raise HTTPException(status_code=409,
                                detail="Email already registered")
    signedup_user = create_user(db, user_data)
    print("--------->", signedup_user)
    return signedup_user

sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'password' at row 1") [SQL:插入用户(lname、fname、email、password)值(%(lname)s、%(fname)s、%(email)s、%(password)s)] [参数:{'lname':'stsdf','fname':'swef','email':'didou@gmail.com','密码':b'$2b$12$nui9RJwoVkU.h6d9ASw6POLZhbn83YrwGKpsNvp.GlnsDa7X4VIqS'}] (此错误的背景:http://sqlalche.me/e/13/9h9h

【问题讨论】:

  • 请分享User 模型的代码。您认为“第 1 行的“密码”列的数据太长”可能意味着什么?
  • 我只是把password = Column (String (100)) 这样列就不会太多了吧?

标签: python sqlalchemy fastapi


【解决方案1】:

最好包含此错误中涉及的所有代码。

但是,这行代码

hashed_password= bcrypt.hashpw(user.password.encode('utf-8'), bcrypt.gensalt())

生成的字符串(散列)比您的模型所能容纳的更长。

您为密码属性指定的大小对于该哈希来说不够大。

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 2017-01-17
    • 2021-05-09
    • 2013-04-03
    • 2021-09-02
    • 2012-02-11
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多