DB

DB

[MariaDB]CentOS6.6+MariaDBのクラスタ版を試してみる その1

MySQLから新標準DBになりつつあるMariaDB 今回はそのクラスタ版であるMariaDB Galera Clusterを試してみたいとおもいます。 MySQLにもクラスタ版はありましたが、ちょっと設定が面倒な用で敬遠していましたが、調...
CakePHP

[CakePHP1.2]shellクラスの継承時にModelが読み込まれない

今更CakePHP1.2を使っている人は少ないと思いますが、一応メモとして残しておきます。 Shellクラスで親クラスを作って、それを継承させた場合、なぜかusesで指定したモデルが登録されていませんでした。 (ちなみにCakePHP2.x...
CakePHP

[CakePHPプラグイン]cakeplus

CakePHPはデフォルトでも便利な機能が満載ですが、しょせんは海外製。日本のWeb作成事情の機能は反映されていません。 そういった隙間を埋めるのがこのcakeplusプラグインです。
DB

[MySQL]MySQLでパーティショニングを使う場合の例

MySQLでパーティショニングを使う場合の例 #既存のテーブルにパーティションを作成 ALTER TABLE table_name PARTITION BY RANGE (id) ( PARTITION 1000000_table_name...
MySQL

[mysql]パーティショニングの使いどころ

mysqlにはパーティショニングという大変便利な機能がある。 これは、あるカラムの条件をキーにしてテーブルを分割して、検索効率を上げる便利な機能である。 パーティショニングとこんなに早くなる!というメリットを書いてあるブログはたくさんあるの...
CakePHP

[CakePHP1.2]id以外のカラムでアソシエーション

id以外のカラムでアソシエーションしたい場合。 こんな感じで一時的にprimaryKeyを変更する。 $this->{model}->primaryKey->='hoge_id'; 使い終わったら戻しておきましょう。 $this->{mod...
CakePHP

[cakephp1.2]validatesチェック後にデータを読み込むとエラーメッセージがリセットされる

$this->{model}->set($this->data); $this->{model}->validates(); $this->{model}->read(null,1); などとして、ヴァリデーションチェック後に読み込みを行う...
DB

[MySQL]DBの高速重複チェック

DBにデータを入れる際に、同一データがないかどうかチェックをしなければならない場合。 単純に、同じ名前の人がいるか?というようなものだったら単純にselect文を発行してチェックすればよい。 (まぁ、名前の漢字が違うとか、電話番号のフォーマ...
DB

[MySql]1016: Can’t open file: ‘./~/~.frm’ (errno: 24) エラーの対処法

MySqlでパーティションテーブルを設定しようとしたら以下のようなエラーメッセージが出てしまった。 1016: Can't open file: './~/~.frm' (errno: 24) どうも、mysqlが同時に開くことができるファ...
CakePHP

[CakePHP2.x]レプリケーション環境での保存先変更

レプリケーション環境下でマスター、スレーブ環境の切り替えを 行うAPI 設定 database.phpにマスターとスレーブの接続設定を書く ルールはスレーブ用の設定名の後ろに_master を付けた マスター用の設定を記述する 例) $de...
CakePHP

[CakePHP2.x]DebugKitとキャッシュのPermission denied問題について

CakePHP2.xのあるバージョンからやたらとキャッシュに関する問題が多発しているように思われます。 対処法としては、以下の2ファイルにマスクの設定を追記してあげるのが良いようです。 //app/Config/core.php Cache...
CakePHP

[cakephp2]アプリケーションを複数設置してAPCを用いている場合の注意

意外と気が付かない点。 APCをつかってcakephp2のアプリケーションを複数サーバーに設置している場合。 設定を一部ダブらないようにした方がいいようです。 core.php //APCを使う場合の設定例 Configure::write...
CakePHP

[cakephp2.x]セッションの保存先をDBするときにハマった件

表題の件。 cakephp2でセッションの保存先をDBにする場合。 core.phpでSessionの設定を下記に変更して Configure::write('Session', array( //'defaults' => 'php' '...
CakePHP

[cakephp2]modelのソートでrand()を使う場合の注意

たとえば、ランダムにデータを取得したい場合。 $this->(model)->find('list',array('order'=>array('rand()'))); とするとSQLでは ... rand() ASC ... などとなって...
CakePHP

[cakephp2.x]pagenateのカウントがおかしい場合。

pagenateのfiledsでDESCENTやgrop byを使うとカウントがおかしくなってしまう場合。 AppModel.phpに以下でpaginateCount()関数をオーバーライドすればいい。 function paginateC...
CakePHP

[CakePHP1.2]Cakeでレプリケーションを使う場合

config/database.phpにマスター、スレーブのdb接続設定を以下のように追加する。 例 $default=array(DB設定); //スレーブ $default_master=array(DB設定); //マスター save...
CakePHP

[CakePHP2.x]modelの連想配列にモデル名が入ってこない件

CakePHP2.x系+CentOS6系の組み合わせだと、なぜかmodelの連想配列にモデル名が入ってこない場合があるようです。 どうもPDO.MySQLとMySQLの組み合わせで、あるAPIでテーブル名がうまく取得できない場合があるため、...
CakePHP

[CakePHP1.2]モデルのテーブル名を動的に切り替える

モデルで使用しているテーブル名を動的に切り替えるメソッド $this->Model->setSource(table_name); マージテーブルなどで年代別に複数のテーブルに分割している場合などで、特定のテーブルのデータを取得したいときに...
CakePHP

[CakePHP]NULLデータをコミットする

リストボックスなどで未選択の場合にデータとしてNULLを設定したい場合、空白のデータがなぜか"0"で保存されてしまいます。 この場合、modelのbeforeSave()メソッドで以下のような処理を行えば良い。 function befor...