0

この奇妙な質問を受けましたが、オンラインではあまり答えが見つかりません。

コードは次のようになります。

$config = new Zend_Config_Ini('../application/configs/application.ini',
                              APPLICATION_ENV);
$db = Zend_Db::factory($config->resources->db->adapter,
                       $config->resources->db->params->toArray());
$db->setFetchMode(Zend_db::FETCH_ASSOC);
$db->query('set names utf8;');

次に、画面にエラーが表示されます:

An error occurred
Application error
Exception information:

Message: SQLSTATE[08006] [7] invalid connection option "adapter"
Stack trace:

#0 /srv/uhg/ZF/library/Zend/Db/Adapter/Pdo/Pgsql.php(87): Zend_Db_Adapter_Pdo_Abstract->_connect()
#1 /srv/uhg/ZF/library/Zend/Db/Adapter/Abstract.php(459): Zend_Db_Adapter_Pdo_Pgsql->_connect()
#2 /srv/uhg/ZF/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('set names utf8;', Array)
#3 /srv/uhg/workspaces/zpe/library/Tls/Acl.php(72): Zend_Db_Adapter_Pdo_Abstract->query('set names utf8;')
#4 /srv/uhg/workspaces/zpe/application/controllers/IndexController.php(12): Tls_Acl->__construct('developer')
#5 /srv/uhg/ZF/library/Zend/Controller/Action.php(133): IndexController->init()
#6 /srv/uhg/ZF/library/Zend/Controller/Dispatcher/Standard.php(268): Zend_Controller_Action->__construct(Object(Zend_Controller_Request_Http ), Object(Zend_Controller_Response_Http), Array)
#7 /srv/uhg/ZF/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 /srv/uhg/ZF/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#9 /srv/uhg/ZF/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#10 /srv/uhg/workspaces/zpe/public/index.php(29): Zend_Application->run()

また、$config で取得したものを省略しようとしました。

PDO_PGSQL: 構成に関するもの

Array ( [adapter] => PDO_PGSQL
        [host] => localhost 
        [username] => postgres
        [password] =>
        [dbname] => uhg
        [default] => 1 )

これをオンラインで検索したとき、誰かが設定を解除する必要があることを示唆しています$config->resources->db->adapter(もちろん、その値をどこかに保存した後)が、試してみると、できないことが示唆されています。

これは MySQL データベースで問題なく動作するため、postgresql でのみ発生するようです。

私は Posgresql を初めて使用しますが、これは Postgresql の問題でしょうか?

誰か光を当ててください。

乾杯。

PS:

$dbの場合、エクスポートします(実際のdb名をxx-xxxに置き換えました):

object(Zend_Db_Adapter_Pdo_Pgsql)#91 (12) { ["_pdoType":protected]=> string(5) "pgsql" ["_numericDataTypes":protected]=> array(12) { [0]=> int(0) [ 1]=> int(1) [2]=> int(2) ["INTEGER"]=> int(0) ["SERIAL"]=> int(0) ["SMALLINT"]=> int(0) ["BIGINT"]=> int(1) ["BIGSERIAL"]=> int(1) ["DECIMAL"]=> int(2) ["DOUBLE PRECISION"]=> int(2) ["NUMERIC"] => int(2) ["REAL"]=> int(2) } ["_defaultStmtClass":protected]=> string(21) "Zend_Db_Statement_Pdo" ["_config":protected]=> array(10) { [" adapter"]=> string(9) "Pdo_Pgsql" ["host"]=> string(9) "localhost" ["username"]=> string(8) "postgres" ["password"]=> string(0) "" ["dbname"]=> string(3) "xxx-xxx" ["default"]=> string(1) "1" ["charset"]=> NULL [ "persistent"]=> bool(false) ["options"]=> array(3) { ["caseFolding"]=> int(0) ["autoQuoteIdentifiers"]=> bool(true) ["fetchMode"]= > int(2) } ["driver_options"]=> array(0) { } } ["_fetchMode":protected]=> int(2) ["_profiler":protected]=> object(Zend_Db_Profiler)#92 (4 ) { ["_queryProfiles":protected]=> array(0) { } ["_enabled":protected]=> bool(false) ["_filterElapsedSecs":protected]=> NULL ["_filterTypes":protected]=> NULL } ["_defaultProfilerClass":protected]=> string(16) "Zend_Db_Profiler"["_connection":protected]=> NULL ["_caseFolding":protected]=> int(0) ["_autoQuoteIdentifiers":protected]=> bool(true) ["_allowSerialization":protected]=> bool(true) [ "_autoReconnectOnUnserialize":保護]=> bool(false) }

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!

みんなの助けに感謝します、私はこれを修正する方法を見つけました:

$db = new Zend_Db_Adapter_Pdo_Pgsql(array(
             'host' => 'localhost',  
            'username' => 'postgres',  
            'password' => '',  
            'dbname' => 'uhg'        
 ));
4

1 に答える 1

1

何が起こっているかはわかると思いますが、どのように、またはなぜなのかは明らかではありません。

「アダプター」オプションは PostgreSQL 接続自体に渡されるようで、明らかにそれをサポートしていません。

于 2012-08-13T08:55:02.903 に答える