2010-11-19 18 views
1

Je continue d'avoir ce problème avec PDO, où cette erreur apparaît dans mes tests.PDO Impossible d'exécuter des requêtes alors que d'autres requêtes sans tampon sont actives

<?php 

require_once('simpletest/unit_tester.php'); 
require_once('simpletest/reporter.php'); 
require_once('../model.php'); 

class TestOfCallMapper extends UnitTestCase { 
function testOfReturnsAll() { 
} 

function setUp() { 
    R::setup("mysql:host=localhost;dbname=poo", root, ''); 
    $this->destroySchema(); 
    $this->createSchema(); 
} 

function tearDown() { 
    $this->destroySchema(); 
} 

private function createSchema() { 
    R::exec(file_get_contents('../database/create_schema.sql')); 
} 

private function destroySchema() { 
    R::exec(file_get_contents('../database/destroy_schema.sql')); 
} 

} 

$test = new TestOfCallMapper('Test of CallMapper Methods'); 
$test->run(new HTMLReporter()); 

Je suis assez sûr que ce qui se passe est que les choses dans mon dossier de create_schema continue d'exécuter et de bloquer d'autres requêtes de courir car il me dit les requêtes sont unbuffered. J'ai abandonné l'utilisation de PDO parce que cela n'avait aucun sens pour moi et j'ai commencé à utiliser un autre ORM appelé Redbean. Malheureusement, je reçois à nouveau cette erreur irritante, et je n'arrive pas à la résoudre, puisque apparemment Redbean est au sommet du PDO. Lorsque j'ai utilisé PDO, j'ai essayé de définir l'option pour activer les requêtes tamponnées et cela n'a pas fonctionné. En dehors de mes tests, la méthode semble fonctionner correctement, mais je ne suis pas vraiment sûr que ce soit acceptable.

+0

Si vous voulez que nous vous aidions, montrez-nous le code PDO, pas une autre classe que vous avez écrite qui appelle un code qui utilise PDO. Fondamentalement, si vous exécutez une requête qui renvoie des résultats, vous devez extraire ces résultats avant d'exécuter une autre requête, ou au moins effacer le tampon ou fermer la connexion. –

+0

Je ne sais pas où se trouve le code PDO. Il disparaît quelque part dans cet ORM de 3ème partie. PHP utilement ne me dit pas où. –

+0

Oh je vois, je pensais que c'était vos propres fonctions –

Répondre

0

Ceci s'est corrigé quand je suis passé à un nouveau serveur. Je n'ai jamais trouvé le problème.