Domanda

Devo accedere a Firebird con PHP e Zend Framework 2 e sto avendo il seguente errore:

 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver /Pdo/Statement.php:187

Message:

SQLSTATE[HY000]: General error: -204 Dynamic SQL Error SQL error code = -204 Table  unknown pessoa At line 1, column 19 

Stack trace:

#0 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver /Pdo/Statement.php(187): PDO->prepare('SELECT "pessoa"...')
#1 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php(213): Zend\Db\Adapter\Driver\Pdo\Statement->prepare()
#2 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(233): Zend\Db\Adapter\Driver\Pdo\Statement->execute()
#3 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(208): Zend\Db\TableGateway\AbstractTableGateway->executeSelect(Object(Zend\Db\Sql\Select))
#4 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(195): Zend\Db\TableGateway\AbstractTableGateway->selectWith(Object(Zend\Db\Sql\Select))
#5 /var/www/html/cad/module/Pessoa/src/Pessoa/Model/PessoaTable.php(18): Zend\Db\TableGateway\AbstractTableGateway->select()
#6 /var/www/html/cad/module/Pessoa/src/Pessoa/Controller/PessoaController.php(26): Pessoa\Model\PessoaTable->fetchAll()
#7 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): Pessoa\Controller\PessoaController->indexAction()
#8 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#9 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#10 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#11 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#12 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#13 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#14 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#15 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#16 /var/www/html/cad/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#17 /var/www/html/cad/public/index.php(17): Zend\Mvc\Application->run()
#18 {main}
.

Global.php

return array(
 'db' => array(
     'driver'         => 'Pdo',
     'dsn'            => 'firebird:dbname=/opt/bancos/teste.fdb',   //array(PDO::ATTR_PERSISTENT => true),
     /*'driver_options' => array(
         PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
     ),*/
 ),
 'service_manager' => array(
     'factories' => array(
         'Zend\Db\Adapter\Adapter'
                 => 'Zend\Db\Adapter\AdapterServiceFactory',
     ),
 ),
 );
?>
.

local.php

<?php
return array(
    'db' => array(
            'username' => 'sysdba',
            'password' => 'masterkey',
    ),
);
?>
.

pessoacontroller.php

 public function indexAction()
 {

        return new ViewModel(array(
                'pessoas' => $this->getPessoaTable()->fetchAll(),
        ));


  }
.

pessatable.php

public function fetchAll()
 {
            try{
    $resultSet = $this->tableGateway->select();
            } catch(Exception $e){
              $e->getMessage();
            }
    return $resultSet;
  }
.

Ed Ecco il metodo GetPessoatable ()

public function getPessoaTable()
 {
    if (!$this->pessoaTable) {
        $sm = $this->getServiceLocator();
        $this->pessoaTable = $sm->get('Pessoa\Model\PessoaTable');
    }
    return $this->pessoaTable;
 }
.

Ho configurato PDO_Firebird.so in PHP.E si presenta su Phpinfo ()

È stato utile?

Soluzione

La parte importante dell'errore è: "Tabella sconosciuta PESSOA" .Stai selezionando da una tabella pessoa, non esiste una tabella di questo tipo secondo Firebird.Il fatto che pessoa sia minuscolo nel messaggio di errore mostra che si utilizzano identificatori citati.I identificatori citati sono case sensitive in Firebird.Identificatori non quotati sono inossidabile in alto per renderli insensibili.

Quindi questo errore significa che la tabella non esiste davvero, o - come si utilizzano identificatori quotati: il nome della tabella è in realtà PESSOA.Le regole usi Firebird per identificatori citati / non quotati rendono il lavoro SELECT ... FROM pessoa, ma SELECT ... FROM "pessoa" fallisce.

Non conosco DOP, quindi non posso dare un aiuto specifico PDO, ma spero che questo lo restringe per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top