Странности PHP
Предистория:
пишу один сайтег, тестирую на локальной машине Ubuntu Linux
PHP 5.2.6-2ubuntu4 with Suhosin-Patch 0.9.6.2 (cli) (built: Oct 14 2008 20:06:32
все работает как надо, комитю в svn, на сервере Debian Linux
PHP 5.2.6-0.1+b1 with Suhosin-Patch 0.9.6.2 (cli) (built: Dec 3 2008 22:24:05)
делаю svn up
появляется такая ошибка
Zend_Db_Statement_Exception: SQLSTATE[42804]: Datatype mismatch: 7 ERROR: argument of AND must be type boolean, not type record in /var/www/Zend/library/Zend/Db/Statement/Pdo.php on line 238
База используется одна и таже, на одном и том же сервере, ZendFramework используется последня версия из svn (svn up и там и там был сделан после того как появилась эта ошибка).
Код вообще простейший:
<?php
/**
* Description of OrganizationsTable
*
* @author boris
*/
class OrganizationsTable extends Zend_Db_Table
{
protected $_name = 'organizations';
public function locationsNear($data, $page = 0)
{
$longitude = $data['longitude'];
$latitude = $data['latitude'];
$factor = 0.02;
$select = $this->getAdapter()->select()
->from($this->_name)
->where('longitude < ?', $longitude + $factor)
->where('longitude > ?', $longitude - $factor)
->where('latitude < ?', $latitude + $factor)
->where('latitude > ?', $latitude - $factor);
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
$paginator->setCurrentPageNumber($page);
var_dump($paginator);
var_dump($paginator->count());
die;
return $paginator;
}
}
?>
var_dump и die в коде стоит уже специально чтобы проверить почему такая хрень. В общем единственное более менее адекватное объяснение которое этому нашлось это то что Postgres нужно подсовывать boolean в определенном формате, вот тут люди извращались немного http://trac.phpdoctrine.org/changeset/1260 еще в cakephp тоже подобное находил https://trac.cakephp.org/ticket/1285
DboPostgres::value() fails to properly return a quoted representation of booleans. This makes it impossible to store boolean values in PostgreSQL. (critical bug)
Каким боком ко мне это относится я не очень понял, т.к. в таблице не было ни одного boolean поля не было :(
Переносить базу на MySQL не хотелось, я изначально начал этот делать сайт на посгрисе чтобы получше его изучить, и отступать из за одной ошибки не собирался.
Пока сайт только в стадии тестирования решил не заморачиваться сборкой нового php из исходников, но вообще странная ситуация, версии почти не отличаются, а баг таки в одной есть, а в другой нет.