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
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'
});
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;
};
定義と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
})