<Mr.ElectroNick>
/* personal website */

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

После этого все начинает работать!