如何解决如何在 Sequelize 中处理具有不同编码的列?
我在使用 Sequelize (v4/v5/v6) 在 MysqL 5.7 中存储和检索表情符号时遇到问题? 我必须将特定列的编码从 utf8 更改为 utf8mb4 以使 MysqL 按预期存储数据,但现在我无法使用 Sequelize 处理数据。它似乎总是默认为 utf8。到目前为止我尝试过的事情:
let sequelize = new Sequelize(MysqL_db,MysqL_user,MysqL_password,{
host: MysqL_host,dialect: 'MysqL',pool: {
max: 5,min: 0,idle: 10000
},charset: 'utf8mb4',omitNull: true,});
******************************************************************************
let sequelize = new Sequelize(MysqL_db,dialectOptions: {
collate: 'utf8mb4_unicode_ci'
},});
*******************************************************************************
let User = sequelize.define(
'user',{
id: {
type: Sequelize.BIGINT,field: 'id',primaryKey: true
},name: {
type: Sequelize.STRING,field: 'name'
},},{
freezeTableName: true,timestamps: false,dialectOptions: {
collate: 'utf8mb4_unicode_ci'
}
}
);
虽然这些方法在 Sequelize (v4/v5/v6) 中都不起作用,但我注意到运行
await sequelize.query('SET CHARSET utf8mb4')
在对上面的 name 列运行实际查询之前,可以正确存储和检索包含表情符号的名称。 我不想继续使用这个解决方案,因为它更像是一个黑客。相反,我想了解如何覆盖 Sequelize 的默认字符集。我已经尝试过使用 https://github.com/mysqljs/mysql 和 https://github.com/sidorares/node-mysql2 的类似示例,并且在这两种情况下我都能够将默认字符集覆盖为 utf8mb4 但我对 Sequelize 不知所措。官方文档很少谈论字符集覆盖,文档中给出的示例代码与我在上面尝试过的相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。