MySQL dla Django - przewodnik dla Polaków

Zakładając nową bazę MySQL dla Django trzeba bardzo uważać na charset i collate. Musi być zastosowane utf-8, chyba, że programista zdecyduje inaczej i wie co robi. W przeciwnym wypadku panel admina się rozsypie i będzie wywalał błędy.

Tymczasem w MySQL, jeśli się tego jawnie nie zadeklaruje, to baza stworzona poleceniem create database ma szwedzkie COLLATE!

Wyjaśnienie powyżej opisanego zjawiska znajduje się tutaj. Rzeczywiście, domyślnie serwer mysqld ma ustawiony charset na latin1, a collation na latin_swedish_ci.

Żeby więc utworzyć poprawnie bazę danych dla Django należy ją tworzyć poleceniem:

CREATE DATABASE jakas_tam_baza
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_polish_ci;

Ewentualnie można użyć utf8_general_ci. Ustawi się ono samo, gdy zrobimy DEFAULT CHARACTER SET utf8, bez określania COLLATE. Powyższe rozwiązania są sprawdzone i działają!