2008年10月23日木曜日

CAKEPHP1.2 SEHLLを継承したAppShellでモデルが使えない。

CAKEPHP1.2 RC3です。

shellを継承したAppShellクラスを作って、そいつを継承したShellを実行したら

モデルオブジェクトがundefinedになってしまう。

Shellクラスのinitialize()メソッド(cake/console/libs/shell.php 163行目)

を呼ぶ必要があるんだけど、こいつが、

Shell.php の実行時にしか呼ばれない(cake/console/cake.php 305行目あたり)。

くわしくいうと、親クラスがShellClassの場合しか呼ばれない。

つまり、ShellClassを継承したAppShellClassを継承した孫クラスでは

親クラスがAppShellClassになるため、呼ばれないみたいです。

startupをオーバーライドしてたので、今回はそこに、

parent::initialize();

を書いたけど、Taskを使う場合は、loadTasks()などの処理も必要。

(__constructをオーバーライドしてそこで、書いてもいいけど。)

うーん、こんなもんですか?

2008年10月21日火曜日

MySQLインストール innodbはデフォルトじゃない?!

MySQL5.1.28-rcをソースからインストールして、

/etc/my.cnfのinnodbの記述を全てコメントアウトをはずして

起動すると

エラーになる。

で、結局は

configureオプションに

--with-innodb


をつけなきゃいけないというわなでした。

mysql5.1.28-rc インストール unknown option '--skip-federated' エラー

CentOs5.2(サクラインターネット 専用サーバ)

のMYSQLを消して、MySQL5.1系を入れようとしたときにはまった箇所

bin/mysql_install_db --user=mysqlをした後に

unknown option '--skip-federated'

が表示される。

うーん、なんだこれ?と思ったら

/etc/my.cnfとしてコピーした設定ファイルに

skip-federated記述をコメントアウトしたら、いけた。

federatedエンジンをコンパイルオプションにつけてなかったからかな。

support-files/my-huge.cnf /etc/my.cnf

をコピーしてきたんだけど、デフォルトでコメントアウトしててほしいですね。

2008年10月16日木曜日

LIMITに関数が使えないの?

MySQLってSQL文のLIMITに関数が使えないようです。

SELECT * FROM xx LIMIT FLOOR(50/20)

とかはNGになるみたい。

PROCEDUREのカーソルで、引数から渡したパラムを渡すのもNGみたい。

不便だ。

ちなみにPOSTGRESではいけるみたいよ。

2008年10月10日金曜日

MySQLで外部キー制約の時のエラー

MySQLで外部キーを張ろうとしたらエラーになった。

以下、エラーになった状況のメモとして。

・親テーブルの主キーの型にunsignedを付けるとエラーになる

・親テーブルの主キーの型と子の型があってないとエラーになる。

(親テーブルをbigintにしてたのに、子テーブルのxx_id をintegerにしてた)