文章内容
2023/3/7 17:38:16,作 者: 黄兵
MySQL emoji 表情
最近使用 SQLALchemy 作为 ORM,但是有一个字段如果用户输入了 emoji 表情则程序会报错,为了解决这个问题,查询了一些相关资料,将解决的过程记录下来,方便后面再次遇到此类问题。
关于出现错误的原因,可以参考下面的资料,在此不赘述。
如何解决这个问题:
通过 SQL 修改表的字符集:
ALTER TABLE article MODIFY title varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '标题'; ALTER TABLE article MODIFY abstract varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '摘要';
修改了之后,但是前端还是显示不出来 emoji 表情,还需要修改 MySQL 的连接字符串:
原来的写法:
mysql://User:pass@1.1.1.1:3306/database_name
修改之后的写法:
mysql://User:pass@1.1.1.1:3306/database_name?charset=utf8mb4
也就是形如下面的这样:
connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
同时我们也可以设置 SQLAlchemy 定义的模型编码规则:
about_me = db.Column(db.String(1024,collation='utf8mb4_unicode_ci',), comment='关于我')
参考资料:
2、Using SQLAlchemy and pymysql, how can I set the connection to utilize utf8mb4?
3、enforce column encoding with sqlalchemy
其它相关推荐:
1、数据库读取数据❓
2、1366, "Incorrect string value: '\\xE9\\xBB\\x84\\xE5\\x85\\xB5' for column 'fullname' at row 1"
4、解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常
5、MySQL - 如何修复 Incorrect string value 错误
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - MySQL emoji 表情
评论列表