微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Sequelize 中处理具有不同编码的列?

如何解决如何在 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/mysqlhttps://github.com/sidorares/node-mysql2 的类似示例,并且在这两种情况下我都能够将认字符集覆盖为 utf8mb4 但我对 Sequelize 不知所措。官方文档很少谈论字符集覆盖,文档中给出的示例代码与我在上面尝试过的相同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。