Проблемы в использовании пакета PEAR DataObject
От: php_ddd  
Дата: 16.07.09 13:29
Оценка:
Здравствуйте.

Прошу помочь уважаемое сообщество. Дело в следующем.
Не удается использовать DataObject для работы с базой данных.
Поступаю так:
1) при помощи createTables.php создал классы для всех таблиц базы, создал ini-файл.
2) Использую пример из руководства к пакету DataObject, который описывает работу этого объекта (http://pear.php.net/manual/en/package.database.db-dataobject.intro-purpose.php) с целью построить объект, описывающий таблицу 'person'.

При выполнении скрипта получаю ответ (при debugLevel = 5):
DataObjects_Person: CONNECT: Checking for database specific ini ('') : database_ in options
DataObjects_Person: CONNECT: NEW CONNECTION TP DATABASE :
DataObjects_Person: CONNECT: mysql://root@localhost/DB_YAMAHA a9f52db4180156a7919157c5a2b352e2

где "DB_YAMAHA" — название базы данных, используемой для тестов.

Причем, после создания объекта DataObject для таблицы 'person' при просмотре этого объекта (распечатка при помощи print_r) он содержит практически пустые поля:
DataObjects_Person Object ( [id] => [name] => [friend] => [_DB_DataObject_version] => 1.8.10 [__table] => [N] => 0 [_database_dsn] => [_database_dsn_md5] => [_database] => [_query] => Array ( [condition] => [group_by] => [order_by] => [having] => [limit_start] => [limit_count] => [data_select] => * ) [_DB_resultid] => [_resultFields] => [_link_loaded] => [_join] => [_lastError] => )

Поле 'table__' в этом объекте пустое.

Если же использовать не переопределенный класс DataObjects_Person, а тот который автоматически создается при помощи createTables.php, то поле
'table__' = 'pearson' в остальном результат (ответ, который выводится на экран при выполнении index.php) тот же.

Контекст использования:
Использую PEAR в связке с Denwer без установки и прописывания путей в php.ini.
Для тестов создана отдельная папка в каталоге home в структуре Denwer — т.е. создан отдельный сайт.
Структура такая:

index.php
example.ini
includes
|
dbtest
|
DB_YAMAHA.ini
Person.php
...
pear
|
PEAR
| |
| ChannelFile
| Command
| Downloader
| ...
DB
|
DataObject
| |
| Cast.php
| createTables.php
| ...
DB
||
|sybase.php
|storage.php
|...
|
MDB2
| |
| Driver
|
DataObject.php
DB.php

В index.php в начале прописаны пути для PEAR:

$path = 'pear';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

$path = 'pear\PEAR';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);


Есть подозрение, что не правильно настраиваю подключение объекта к ini файлу, описывающему базу данных.
Но в руководстве пользователя (http://pear.php.net/package/DB_DataObject/docs) пока что не найдено никаких ключей к этому вопросу.

Где можно посмотреть варианты возможного решения проблемы?
Что возможно сделать в такой ситуации и что можно исправить?
Как вы считаете?
pear php denwer dataobject
Re: Проблемы в использовании пакета PEAR DataObject
От: Antidote  
Дата: 10.08.09 06:12
Оценка:
Здравствуйте, php_ddd, Вы писали:

Если еще актуально
А что написано в DataObjects_Person:QUERY при debugLevel = 5?

Должно быть
DataObjects_Person: QUERY : SELECT * FROM person
DataObjects_Person : query : QUERY DONE IN X seconds
...
Чему бы грабли ни учили, а сердце верит в чудеса.
Re[2]: Проблемы в использовании пакета PEAR DataObject
От: php_ddd  
Дата: 18.08.09 13:30
Оценка:
Здравствуйте, Antidote, Вы писали:

Дело в том, что последним сообщение, отданным DataObjects_Person в режиме debugLevel = 5 является

DataObjects_Person: CONNECT: mysql://root@localhost/DB_YAMAHA a9f52db4180156a7919157c5a2b352e2

Далее ничего нет.
Такие дела.
Re[3]: Проблемы в использовании пакета PEAR DataObject
От: Antidote  
Дата: 28.08.09 05:38
Оценка:
Здравствуйте, php_ddd, Вы писали:

_>Здравствуйте, Antidote, Вы писали:


_>Дело в том, что последним сообщение, отданным DataObjects_Person в режиме debugLevel = 5 является


_>DataObjects_Person: CONNECT: mysql://root@localhost/DB_YAMAHA a9f52db4180156a7919157c5a2b352e2


_>Далее ничего нет.

_>Такие дела.

Вот мой лог:

DataObject : find       : 
DataObject : CONNECT       : Checking for database specific ini ('') : database_ in options
DataObject : CONNECT       : NEW CONNECTION TP DATABASE :
DataObject : CONNECT       : mysql://userName:password@servername/databaseName ba19f5523d0afa35345e1ce15e836c85
DataObject : CONNECT       : a:1:{s:32:"ba19f5523d0afa35345e1ce15e836c85";O:8:"DB_mysql":8...
DataObject : databaseStructure       : Loaded ini file: C:\.../databaseName.ini
DataObject : QUERY       : SELECT * ....


У вас есть ini файл? Как вы создавали DataObjectName.php файлы? Auto Building?

ПыСы: постараюсь чаще заглядывать сюда, чтобы чаще отвечать
Чему бы грабли ни учили, а сердце верит в чудеса.
Re[4]: Проблемы в использовании пакета PEAR DataObject
От: php_ddd  
Дата: 06.09.09 19:49
Оценка:
Здравствуйте, Antidote, Вы писали:

A>Вот мой лог:


A>
A>DataObject : find       : 
A>DataObject : CONNECT       : Checking for database specific ini ('') : database_ in options
A>DataObject : CONNECT       : NEW CONNECTION TP DATABASE :
A>DataObject : CONNECT       : mysql://userName:password@servername/databaseName ba19f5523d0afa35345e1ce15e836c85
A>DataObject : CONNECT       : a:1:{s:32:"ba19f5523d0afa35345e1ce15e836c85";O:8:"DB_mysql":8...
A>DataObject : databaseStructure       : Loaded ini file: C:\.../databaseName.ini
A>DataObject : QUERY       : SELECT * ....

A>


A>У вас есть ini файл? Как вы создавали DataObjectName.php файлы? Auto Building?


A>ПыСы: постараюсь чаще заглядывать сюда, чтобы чаще отвечать


Здравствуйте.
Дело на данный момент в следующем: перенес код на домашнюю машину (все делал на работе) и запустил для другой тестовой базы. Все заработало.

Дома тоже стоит денвер в той же конфигурации. Сам код перенесен без изменений.
Ini-файл для базы и классы, описывающие таблицы простроил действительно при помощи createTables как описано в руководстве по auto building.

Что и как копать в данном случае я примерно представляю — надо еще раз проверить среду выполнения кода на разных машинах.

Спасибо за ваше участие. В целом вопрос можно считать закрытым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.