CodeIgniter & Acicrud : Erreur ‘DB_driver.php on line 837’

Voici un titre de billet un peu barbare mais il s’agit ici de parler d’une erreur très spécifique qui peut survenir avec la version 2.0.2 de CodeIgniter lors de l’utilisation d’Acicrud.

Le cas de figure est le suivant, vous tentez de lire une entrée en base de données avec la méthode read($primary_key) (par exemple) et une erreur fatale est levée :

Call to a member function result_array() on a non-object in /system/database/DB_driver.php on line 837

La cause probable de cette erreur est une mauvaise configuration au niveau de la base de données ou au niveau d’Acicrud.

Voici une procédure de vérification qui vous permettra très certainement de corriger l’erreur :

  • Si vous utilisez un préfixe de table, vous devez l’indiquer dans /application/config/database.php dans $db[‘default’][‘dbprefix’], assurez-vous d’avoir spécifié l’underscore final, par exemple « mon_prefixe_ ».
  • Vérifiez ensuite que le modèle incriminé instancie bien la librairie Acicrud avec le nom de la table liée sans le préfixe et que le nom de la table est correct. Par exemple, pour une table nommée « my_prefix_users », l’appel du constructeur doit être le suivant : parent::__construct(‘users’);
  • Dernière possibilité, vérifiez que la requête SQL générée par le driver de CodeIgniter est correcte, pour cela ouvrez /system/database/DB_driver.php et faîtes un echo de $sql en ligne 833 juste avant le $query = $this->query($sql);
Cette entrée a été publiée dans CodeIgniter, et marquée avec , , , le par Team Nukium.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *