鍍金池/ 問答/數(shù)據(jù)庫/ flask-sqlalchemy數(shù)據(jù)庫限制字段長度,為什么是截取的?

flask-sqlalchemy數(shù)據(jù)庫限制字段長度,為什么是截取的?

問題描述

在插入數(shù)據(jù)的時候username 我傳11位,例如12345678901,數(shù)據(jù)庫只存1234567890,默認截取了前十位,
我的String(10) 設置的是10

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

暫時沒想到什么好的方法

相關代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

from port import db
class User(db.Model):

__tablename__ = 'b_user'
id = db.Column(db.Integer,primary_key=True )
username = db.Column(db.String(10),unique=True,index=True, nullable=False)
password = db.Column(db.String(16))

def __init__(self,username,password):
    self.username  = username
    self.password = password
def __repr__(self):
    return '<User %r>' % self.username
def __json__(self):
    return ['id', 'username', 'password']

你期待的結(jié)果是什么?實際看到的錯誤信息又是什么?

我期待是,插入字符串超長,需要報出異常,不能插入數(shù)據(jù)庫,求各位大佬給個解決的方案!??!不勝感激

回答
編輯回答
臭榴蓮

這個問題并不是flask-sqlalchemy的問題,是數(shù)據(jù)庫配置的問題
mysql配置有個叫做嚴格模式,這個嚴格模式是為了檢查數(shù)據(jù)類型,數(shù)據(jù)長度是否符合等等。
你開啟了之后,長度過長的話它就會報錯,而不是截取輸入。
但是有個問題,線上的話開這個要慎重,因為你不能確定是否在其他代碼塊,傳參數(shù)的時候不合理。
所以要么就是在項目開始的時候,開發(fā)環(huán)境和生產(chǎn)環(huán)境都開啟嚴格模式~~

2017年3月14日 18:02