Node.jsのORMであるSequelizeを使用し、DBを作成した際に日本語が登録できない問題に遭遇したので備忘として。
1 2 3 4 5 6 7 8 9 10 11
"development": { "username": "root", "password": "", "database": "db_name", "host": "db", "dialect": "mysql", "define": { "charset": "utf8mb4", "collate": "utf8mb4_general_ci" } }
まず結論を書くと、以下2つがお手軽に解決できる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// /migrations/000000-fix-db-charset.js 'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.sequelize.query( `ALTER DATABASE ${ queryInterface.sequelize.config.database } CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;` ); }, down: (queryInterface, Sequelize) => {} };
sequelize.sync({ force: true }) を実行する場合は、各テーブルのデフォルトエンコーディングとして設定してくれるらしいく、sequelize-cliではconfig.jsonを認識してくれないようだ。。。