diff --git a/migrations/20170414193114-database-utf8mb4.js b/migrations/20170414193114-database-utf8mb4.js new file mode 100644 index 000000000..f1c9c838b --- /dev/null +++ b/migrations/20170414193114-database-utf8mb4.js @@ -0,0 +1,14 @@ +'use strict'; + +var url = require('url'); + +exports.up = function(db, callback) { + var dbName = url.parse(process.env.DATABASE_URL).path.substr(1); // remove slash + + // by default, mysql collates case insensitively. 'utf8_general_cs' is not available + db.runSql('ALTER DATABASE ' + dbName + ' DEFAULT CHARACTER SET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci', callback); +}; + +exports.down = function(db, callback) { + callback(); +}; diff --git a/setup/start/mysql.cnf b/setup/start/mysql.cnf index eaba3f248..8339fa901 100644 --- a/setup/start/mysql.cnf +++ b/setup/start/mysql.cnf @@ -8,3 +8,19 @@ max_connections=50 # on ec2, without this we get a sporadic connection drop when doing the initial migration max_allowed_packet=32M +# https://mathiasbynens.be/notes/mysql-utf8mb4 +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci + +[mysqldump] +quick +quote-names +max_allowed_packet = 16M +default-character-set = utf8mb4 + +[mysql] +default-character-set = utf8mb4 + +[client] +default-character-set = utf8mb4 +