web-dev-qa-db-ja.com

Node、Sequelize、Mysql-モデルに照合順序と文字セットを定義する方法は?

Sequelize/w nodeとnode-mysqlを使用しています。

私はsequelize-cliを使用してモデルを作成し、これが結果です。

'use strict';
module.exports = function(sequelize, DataTypes) {
  let songs = sequelize.define('songs', {
    name: DataTypes.STRING,
    link: DataTypes.STRING,
    artist: DataTypes.STRING,
    lyrics: DataTypes.TEXT,
    writer: DataTypes.STRING,
    composer: DataTypes.STRING
  });

  return songs;
};

モデルの各プロパティに照合順序と文字セットを定義できるようにしたい。デフォルトの照合は「latin1_swedish_ci」であり、「utf-8」で必要です。

誰でも? Tnx

10
Eyal Cohen

Uがsequelizeを定義する部分

var sequelize = new Sequelize('database', 'username', 'password', {
  define: {
    charset: 'utf8',
    collate: 'utf8_general_ci', 
    timestamps: true
  },
  logging:false
});

テーブルレベル変更用

sequelize.define('songs', {
  name: DataTypes.STRING,
  link: DataTypes.STRING,
  artist: DataTypes.STRING,
  lyrics: DataTypes.TEXT,
  writer: DataTypes.STRING,
  composer: DataTypes.STRING
}, {
  charset: 'utf8',
  collate: 'utf8_unicode_ci'
});
25

utf-8を追加するのは非常に簡単です。たとえば、お持ちの任意のモデルに移動してこれを実行するだけです(たとえば、コードを編集します)。

module.exports = function(sequelize, DataTypes) {
  let songs = sequelize.define('songs', {
    name: {DataTypes.STRING,allowNull : false},
    link: {DataTypes.STRING,allowNull : false},
    artist: {DataTypes.STRING,allowNull : false},
    lyrics: {DataTypes.TEXT,allowNull : false},
    writer: {DataTypes.STRING,allowNull : false},
    composer: {DataTypes.STRING,allowNull : false}
  }, {
charset: 'utf8', /* i add this two ligne here for generate the table with collation  = 'utf8_general_ci' test it and tell me ? */
collate: 'utf8_general_ci'


});

  return songs;
};
0
bahri noredine

定義とDialectOptions

  define: {
    charset: 'utf8mb4',
    timestamps: false,
    dialectOptions: {
      collate: 'utf8mb4_general_ci'
    }
  },

全景

var sequelize = new Sequelize(nconf.get('database:db'), nconf.get('database:user'), nconf.get('database:pass'), {
      port: nconf.get('database:port'),
      pool: {
        min: 1,
        max: 60,
        idle: 100000
      },
      define: {
        charset: 'utf8mb4',
        timestamps: false,
        dialectOptions: {
          collate: 'utf8mb4_general_ci'
        }
      },
      dialect: 'mariadb',
      dialectOptions: {
        supportBigNumbers: true,
        bigNumberStrings: true
      },
      benchmark: false,
      logging: false
    })
0
indospace.io