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