Python + Django — Incorrect string value при сохранении текста в базу
Наткнулся на такую ошибку в своей работе. При создании базы при помощи команды syncdb таблицы и поля создаются с дефолтным collation базы.
Как фиксить — под катом…
В первую очередь для уменьшения вероятности подобных ситуаций в будущем альтерим базу данных:
ALTER DATABASE `your_database_name` CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
Во вторую очередь альтерим таблицу:
USE `your_database_name`; ALTER TABLE `your_table_name` CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
И в конце концов наводим порядок в полях:
ALTER TABLE wiki_page CHANGE COLUMN `content` `content` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL;
Если пользуетесь phpmyadmin — то там просто в свойствах базы, таблицы и поля ставить ВЕЗДЕ utf8_unicode_ci или utf8_general_ci
После этого все начинает работать!