flask 建表语句和常见报错

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ cat models / user.py
#!/usr/bin/env python
# encoding: utf-8
__author__  =  'Andy'
from  extensions  import  db
from  datetime  import  datetime
class  User(db.Model):
     __tablename__  =  'user'
     _id  =  db.Column(db.Integer, primary_key = True , autoincrement = True )
     name  =  db.Column(db.String( 256 ), nullable = False , unique = True )
     zh_name  =  db.Column(db.String( 256 ), nullable = True )
     password  =  db.Column(db.String( 256 ), nullable = False )
     _type  =  db.Column(db.Integer, nullable = False , default = 1  )
     #COMMENT='1 is User;2 is Admin, 3 is SuperAdmin'
     sex  =  db.Column(db.Enum( 'M' 'F' ), nullable = False )
     email  =  db.Column(db.String( 256 ), nullable = True , unique = True )
     favicon =  db.Column(db.String( 1024 ))
     create_time  =  db.Column(db.DateTime, nullable = False , default = datetime.now())
     last_update  =  db.Column(db.DateTime(), nullable = False , default = datetime.now())


执行建表

sudo python manage.py db_setup

报错


sqlalchemy.exc.InternalError: (InternalError) (1071, u'Specified key was too long; max key length is 767 bytes')



原因:

将字段设置成为unique后mysql会自动将唯一性索引建立在该字段上,,而对于维护唯一性索引又会存在着系统开销,所以就会出现这种问题,一方面提供唯一性索引,另外避免维护过长的索引造成的开销问题。

另外在mysql中还有一个问题必须注意,那就是utf-8默认是一个字符占用三个字节,对于GBK这些编码方式占用的是2个字节,因此如果你的字符集编码格式为utf-8的话,那么767/3=255个字符,只能支持到255个字符,而非767,这点需要特别注意。


解决办法,将有unique的字段变小,变成128 即可

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1767117如需转载请自行联系原作者


cuizhiliang

相关文章
|
Python
python flask 后端报错 ImportError: cannot import name ‘cached_prope‘
问题python flask 后端报错 ImportError: cannot import name ‘cached_prope‘flask程序启动但抛出该错误,是因为werkzeug 版本过高,需要降低版本即可 解决:一般这种情况是需要注意第三方库版本的对应,werkzeug需要0.16.0 版本时 flask的版本应该时1.x.x 的版本,不能是2.x过高的版本。
172 0
|
5月前
|
监控 Serverless API
函数计算操作报错合集之在函数计算用gunicorn启动flask,会报错找不到这个包,该怎么办
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
5月前
|
前端开发 索引 Python
【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str
【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str
|
Python
运行项目时flask_sqlalchemy报错AttributeError: ‘LocalStack‘ object has no attribute ‘__ident_func__‘
1.原因 是由于flask_sqlalchemy版本不匹配导致的,我们需要自动获取正确的包版本
860 1
【Flask】flask-bootstrap报错AttributeError: module ‘dominate.tags‘ has no attribute ‘input‘解决方法
【Flask】flask-bootstrap报错AttributeError: module ‘dominate.tags‘ has no attribute ‘input‘解决方法
flask确定已经按照,日志报错no module named 'flask',成功解决
我的问题在于python版本的问题,更换版本即可,具体原因我也很懵
flask确定已经按照,日志报错no module named 'flask',成功解决
|
Python
Python编程:uWSGI配置报错ModuleNotFoundError: No module named 'flask'
Python编程:uWSGI配置报错ModuleNotFoundError: No module named 'flask'
525 0
|
Python
Flask - 访问返回字典的接口报错:The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.
Flask - 访问返回字典的接口报错:The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.
1521 0
Flask - 访问返回字典的接口报错:The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.
|
2天前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
14 2