Tag/MySQL

DjangoとMySQLでForeignKeyのつく条件(の続き)

結構前に、 ここらへんDjangoMySQL で動かす場合の、 ForeignKey のつく条件についてやきもきしてた訳ですが、 チケット #5729 で上がってたみたいで、 r6650 で進展があったっぽいよ。

試しに r6649r6650 を比べてみる。 models.py は前回と同じようにしてテストする。

from django.db import models

class Oya(models.Model):
    body = models.TextField()

class Kodomo(models.Model):
    parent = models.ForeignKey(Oya)
    body = models.TextField()

これで、 r6649sql を叩くとこんな感じ。

BEGIN;
CREATE TABLE `hige_oya` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `body` longtext NOT NULL
)
;
CREATE TABLE `hige_kodomo` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `parent_id` integer NOT NULL REFERENCES `hige_oya` (`id`),
    `body` longtext NOT NULL
)
;

これが r6650 だとこう変わる。

BEGIN;
CREATE TABLE `hige_oya` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `body` longtext NOT NULL
)
;
CREATE TABLE `hige_kodomo` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `parent_id` integer NOT NULL,
    `body` longtext NOT NULL
)
;
-- The following references should be added but depend on non-existent tables:
-- ALTER TABLE `hige_kodomo` ADD CONSTRAINT parent_id_refs_id_66492efa FOREIGN KEY (`parent_id`) REFERENCES `hige_oya` (`id`);
COMMIT;

変わった事は変わったんだけど、なぜコメントアウト? 「存在しないテーブルへの参照だから。」って言われても、ちゃんとあるんだけどなぁ。

実際作られるテーブルを見てみると、両方とも前回同様こうなった。

mysql> SHOW CREATE TABLE `hige_kodomo`\G
*************************** 1. row ***************************
       Table: hige_kodomo
Create Table: CREATE TABLE `hige_kodomo` (
  `id` int(11) NOT NULL auto_increment,
  `parent_id` int(11) NOT NULL,
  `body` longtext NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `hige_kodomo_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

#5729 は既にクローズされてるし、実に悩ましい。 って言うより、こういう時にリオープン出来るだけの英語力がない(実力もない)のが何よりも悩ましい。

Posted at: 
2007/11/05 22:41:49
0 Comments
1 TrackBack
Tags: 
Django
MySQL
Python
Trackback: 
http://humming.via-kitchen.com/2007/11/05/mysql-foreignkey-on-django/trackback/

tritonn-1.0.5も出たよ!

tritonn-1.0.5 も今しがたリリースされたよ!

KWIC(snippet) が実装されております!これをずっと待ちこがれてたので、早くインストールして試してみたい!

詳しい事は mir the tritonn さんの コチラのエントリー で確認出来ます。

もはや週末の予定は完全に決定致しましたw

ps. pig な人は絶対インストールしてください。

Posted at: 
2007/09/11 02:49:00
0 Comments
0 TrackBacks
Tags: 
MySQL
Senna
Tritonn
Trackback: 
http://humming.via-kitchen.com/2007/09/11/tritonn-105-release/trackback/

tritonnでsnippet

mir the tritonn さんの コチラのエントリー より。

tritonn にsnippet関数が実装されたそうです。 問題が無ければ tritonn-1.0.5に含まれるそうな。

これ、かなり楽しみ。

9月中にリリース予定だそうなので、今から期待しまくりなわけです。 リリースされたらすぐにバージョンアップしてしまいそうな勢い。 ってか、たぶんする。

PrivatePortfile 化は Voluntas さんに期待が高まります!

Posted at: 
2007/09/01 01:55:13
0 Comments
0 TrackBacks
Tags: 
MySQL
Senna
Tritonn
Trackback: 
http://humming.via-kitchen.com/2007/09/01/snippet-on-tritonn/trackback/

「SQL HACKS」買ったよ。

今日は本を買いに渋谷まで。 色々立ち読みして悩んだ結果、

の2冊を購入。

MySQL Stored Procedure Programming 」がめちゃめちゃ欲しかったものの、とりあえず値段が高いのと、それ以前に洋書だということで断念。

和訳して出してほしいなぁ。 いや、これは買ってしまうべきか?

Posted at: 
2007/08/05 22:01:21
0 Comments
0 TrackBacks
Tags: 
book
MySQL
PostgreSQL
Trackback: 
http://humming.via-kitchen.com/2007/08/05/bought-sqlhacks/trackback/

後に続け!

Voluntas さんの コチラのエントリー より。

がアップされてます! Senna - 1.0.8対応。

って事で、早速アップデート。ちゃんと入りましたよ!素敵過ぎます!

Posted at: 
2007/08/05 00:27:08
0 Comments
0 TrackBacks
Tags: 
Mac
MacPorts
MySQL
Senna
Tritonn
Trackback: 
http://humming.via-kitchen.com/2007/08/05/follow-this/trackback/

興味シンシン

Twisted Mind さんの コチラのエントリー より。

Trac + MySQL + mod_wsgi の環境構築テストをされてるみたいです。

前に Trac 0.10.3で MySQL 使ってオオハマリしただけに、コレはちょっと興味シンシン。上手く行くといいなぁ。ってか、上手く行ってほしい!一度やってみた時にはチケットまわりでSQLエラー吐きまくってチケットが全く使えなかった。

そういえば、まだ先の事だと思って調べてなかったけど、 mod_wsgi で動く TracTracEnvParentDir とかって設定出来るんでしょうか?出来るなら乗り換えやすいんだけどなぁ。

ここはとりあえず期待して感想を待つ事にしよっと。

Posted at: 
2007/06/18 02:22:54
4 Comments
0 TrackBacks
Tags: 
mod_wsgi
MySQL
Python
Trac
Trackback: 
http://humming.via-kitchen.com/2007/06/18/very-interested-it/trackback/

MySQL+SennaをPrivatePortfileで入れてみたよ

結構前に Ubuntu の方には MySQL + Senna を入れていたものの、 Macmake か何かでコケてしまったまま放ったらかしになってた。

で、どうやら MacPortsPrivatePortfile の中に MySQL + Senna があるらしい事をちょっと前に知って、 時間があったので試してみる事にした。

とりあえず、 LocalPortfile 自体やった事が無かったので、そっちの環境作りからスタート。どこにディレクトリを作れば良いか分からなかったので、とりあえず /usr/local/srclocalports というディレクトリを作って、そこで作業する事にした。後は書いてある通りにやって行く。

$ cd /usr/local/src
$ mkdir localports
$ cd ./localports
$ mkdir `ls -F1 /opt/local/var/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports/ | grep '\/$'`

コレで MacPorts のレポジトリツリーと同じものを作る。

次に /opt/local/etc/ports/source.conf を書き換える。重複するものがある場合は上に来ているレポジトリを優先するらしいので、とりあえず一番上にローカルのツリーを追加する。

最後にローカルのツリーで portindex コマンドを叩く。

$ cd /usr/local/src/localports
$ portindex

これで PrivatePortfile を使う下準備が出来たので、さっそく Senna からインストールしていく。

SennaのPrivatePortfile をダウンロードしてきて適当なディレクトリに展開する。今回は中身がどんなものか分からなかったので ~/tmp とか作ってそこでとりあえず展開してみた。

$ cd
$ mkdir tmp
$ mv ./senna-1.0.5.tbz2 ./tmp/
$ cd tmp
$ tar jxf ./senna-1.0.5.tbz2

展開すると textproc というディレクトリが出来ていて、その中に senna というディレクトリがある。どうやらこの textproc がレポジトリツリーと対応しているみたいなので、同じ名前の所に senna を移動させる。

$ cd textproc
$ mv ./senna /usr/local/src/localports/textproc

同じように MySQLのPrivatePortfile もダウンロードしてレポジトリツリーに加えておく。

$ mv ./tritonn-1.0.2-mysql5-5.0.41-senna-1.0.5.tbz2 ~/tmp
$ cd ~/tmp
$ tar jxf ./tritonn-1.0.2-mysql5-5.0.41-senna-1.0.5.tbz2
$ cd databases
$ mv ./mysql5 /usr/local/src/localports/databases

いまいち MacPorts の動きを理解していないので、今回はココで MacPorts のアップグレードとかもやっておいた。

$ cd /usr/local/src/localports
$ sudo port -d selfupdate
$ portindex
Creating software index in /usr/local/src/localports
Adding port databases/mysql5
Adding port textproc/senna

Total number of ports parsed:   2
Ports successfully parsed:      2
Ports failed:                   0

上手く行っているようなので、一度 search をかけてみて確認。

$ port search senna
senna                          textproc/senna 1.0.5        Senna: An Embeddable Fulltext Search Engine

どうやらちゃんと認識してくれている模様。なので、 Senna からインストールしてみる。

$ sudo port install senna
--->  Fetching senna
--->  Attempting to fetch senna-1.0.5.tar.gz from http://osdn.dl.sourceforge.jp/senna/25130/
--->  Verifying checksum(s) for senna
--->  Extracting senna
--->  Applying patches to senna
--->  Configuring senna
--->  Building senna with target all
--->  Staging senna into destroot
--->  Installing senna 1.0.5_0
--->  Activating senna 1.0.5_0
--->  Cleaning senna

かなり時間は掛かったものの、無事インストール完了?試す方法を知らないため、確認しないまま MySQL へ移る。

$ sudo port install mysql5 +utf8 +senna
--->  Fetching mysql5
--->  Attempting to fetch mysql-5.0.41.tar.gz from http://mysql.mirrors.pair.com/Downloads/MySQL-5.0/
--->  Attempting to fetch tritonn-1.0.2.mysql-5.0.41.senna-1.0.5.tar.gz from http://globalbase.dl.sourceforge.jp/tritonn/25406/
--->  Verifying checksum(s) for mysql5
--->  Extracting mysql5
--->  Applying patches to mysql5
--->  Configuring mysql5
--->  Building mysql5 with target all
--->  Staging mysql5 into destroot
--->  Installing mysql5 5.0.41_0+darwin_8+senna+utf8
--->  Activating mysql5 5.0.41_0+darwin_8+senna+utf8
--->  Cleaning mysql5

どうやら MySQL も上手くインストールは出来た模様。

あとは普通に mysql_install_db とかして設定して行くだけ。のはずが、 /opt/local/bin に出来るものが全部 mysql5 とか5が付いている事に気がつかなくて最初はちょっと焦った。

基本的な動作テストはちゃんと出来たので、ヒマ見つけて全文検索のテストや Python からのコネクトとかのテストもやらなくちゃね。そこらへんのテスト結果とかもこまめに書いていこう。

Posted at: 
2007/06/03 02:13:47
4 Comments
0 TrackBacks
Tags: 
Mac
MacPorts
MySQL
Senna
Tritonn
Trackback: 
http://humming.via-kitchen.com/2007/06/03/try-to-install-mysqlsenna-with-macports/trackback/

Categories

Archives