DjangoでMySQLを使うメモとか

環境

Ubuntu 11.04

インストール

普通にapt

sudo apt-get install mysql-server
sudo apt-get install python-mysqldb

MySQLの設定

/etc/mysql/my.cnf の [mysqld] に追加

default-character-set=utf8
character-set-server=utf8
skip-character-set-client-handshake

MySQLのシェルで直接名前変更する場合は

set names utf8;

設定を変更したら再起動する

sudo /etc/init.d/mysql restart

DBを作る

mysql -u root -p
mysql> CREATE USER atasatamatara IDENTIFIED BY "********";
mysql> GRANT all ON *.* TO atasatamatara
mysql> exit
mysql -u atasatamatara -p
mysql> create database data;

Djangoの設定

MySQLを使うようにする
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'data'
DATABASE_USER = 'atasatamatara'
DATABASE_PASSWORD = '*********'
DATABASE_HOST = ''
DATABASE_PORT = ''
innoDBを使う

Djangoのsettings.pyに追加

DATABASE_OPTIONS = {
    "init_command": "SET storage_engine=INNODB",
}
syncdb する
python manage.py syncdb

正常にテーブルが作成されることを確認

もろもろハマったところとか

なぜかsyncdbしたのに空だったり table doesn't exist したりした

よくわかんないけど /var/lib/mysql/data が実体っぽいんでを消したりした。たぶんよくない。
あとは

drop database data;
create database data;

となんかつくりなおしたらうまくいった。なんでだろ?

select * from url; が動きません><;

カラムが Url (大文字)だったりした

select * from Url;
utf-8で保存したはずなのに文字化け><;

上記の設定で回避。set names utf8; はとりあえずの処置で、データベースを作るときに

create database data default character set utf8;

とかするといいみたい

関係ないけどMySQLの操作とか
  • show databases でデータベース一覧
  • use data でデータベースを選択
  • show tables でテーブル一覧