Похоже, я имею дело с довольно распространенной проблемой. Моя производственная база данных MySQL имеет набор символов по умолчанию и сопоставление latin1
/ latin1_swedish_ci
. Я забыл изменить это на ранней стадии, и мое приложение Rails выросло до приличного размера с международной аудиторией; не-английские sh символы вызывают исключения, в то время как смайлики отображаются в виде вопросительных знаков.
Я знаю, что передо мной стоит большая задача по конвертации в utf8mb4
/ utf8mb4_general_ci
. Из того, что я понимаю, если я просто запускаю что-то вроде this , мои данные могут оказаться скомпрометированы.
Кажется довольно простым изменить кодировку / сопоставление для всей базы данных следующим образом:
ALTER DATABASE mydbname CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
У меня вопрос, изменится ли ТОЛЬКО кодировка базы данных / collation немедленно повлияет на чтение и запись? Или это просто устанавливает sh какая кодировка применяется при создании новых таблиц в базе данных?
Если я хочу в конечном итоге преобразовать все свои таблицы, кажется, что первым шагом было бы сначала разобраться с уровнем всей базы данных ... но какие побочные эффекты будут иметь место немедленно?