文章内容

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='关于我')


参考资料:

1、让 MySQL 支持存储 emoji 表情

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"

3、(1366, "Incorrect string value: '\\xE5\\xBB\\xBA\\xE7\\xAD\\x91...' for column 'classification_name' at row 1")

4、解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常

5、MySQL - 如何修复 Incorrect string value 错误


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - MySQL emoji 表情

分享到:

发表评论

评论列表