ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

PEAR::MDB2 の罠

PEAR::MDB2では、ステークホルダに空文字を入れるとNULLと扱われるという、oracleの仕様に合わせたものがデフォルトになっている。やめてー。

MDB2 Error: null value violates not-null constraint

空文字がNULL扱いされてnot-nullにしているカラムにNULLが入れられてこんなエラーが出るわけですね。
解決法

<?php
$options = array(
  'portability' => 
    MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL,
);
$mdb2 =& MDB2::factory(
  "mysql://{$User}:{$DBpass}@{$host}/${DBname}",
   $options);
?>

接続する時に、全ての機能のうち、この空文字をNULLにする機能をOFFにする。これで解決。

http://www.stbbs.net/blog/2008/07/pearmdb2null.html
http://codezine.jp/article/detail/2480?p=2