58 votes

CodeIgniter : Impossible de se connecter à votre serveur de base de données en utilisant les paramètres fournis Message d'erreur

J'ai utilisé CI sans problème avec le pilote MySQL. Je veux utiliser le pilote MySQL à la place, mais dès que je le change (j'ai juste ajouté le 'i' à la fin de MySQL, et ajouté le numéro de port), j'obtiens le message d'erreur suivant

Une erreur de base de données s'est produite

Impossible de se connecter à votre serveur de base de données en utilisant les paramètres fournis.

Nom de fichier : core/Loader.php

Numéro de ligne : 232

mes paramètres ressemblent à ceci :

$db['default']['hostname'] = $hostname;
$db['default']['username'] = $username;
$db['default']['password'] = $password;
$db['default']['database'] = $database;
$db['default']['dbdriver'] = 'mysqli';
$db['default']['port']     = "3306";  
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE; 

where
$hostname = 'localhost';
$username = 'myusernamegoeshere';
$password = 'mypasswordgoeshere';
$database = 'mydatabasenamegoeshere'; 

Je l'utilise :

CI 2.0.2 php 5.3.4 Apache/2.2.17 (Unix) mysql 5.5.13 mysql.default_port 3306

Est-ce que je fais quelque chose de mal ?

Merci,

112voto

Valeh Hajiyev Points 2130

Je pense qu'il y a un problème avec la configration PHP.
D'abord, déboguez votre connexion à la base de données en utilisant ce script à la fin de ./config/database.php :

...
  ...
  ...
  echo '<pre>';
  print_r($db['default']);
  echo '</pre>';

  echo 'Connecting to database: ' .$db['default']['database'];
  $dbh=mysql_connect
  (
    $db['default']['hostname'],
    $db['default']['username'],
    $db['default']['password'])
    or die('Cannot connect to the database because: ' . mysql_error());
    mysql_select_db ($db['default']['database']);

    echo '<br />   Connected OK:'  ;
    die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); 

Ensuite, voyez quel est le problème.

4 votes

De loin la meilleure réponse. J'ai eu des erreurs et quand j'ai remplacé le nom d'hôte par défaut par $db['default']['hostname'] = ':/Applications/MAMP/tmp/mysql/mysql.sock' ; ça a marché. Merci à cette page stackoverflow.com/questions/4219970/

3 votes

Cela devrait être la réponse acceptée. Vous avez vraiment sauvé ma journée. Mon problème était si simple que je ne pouvais pas le voir, une faute de frappe de mot de passe ! et votre script m'a aidé à le voir. Merci !

0 votes

Excellente réponse. Adaptée à mysqli et postée ci-dessous. Juste au cas où cela pourrait être utile à quelqu'un d'autre.

62voto

syed.ahmed Points 881

Aujourd'hui, je suis tombé sur ce type de problème sur un serveur en direct et j'ai résolu le problème en changeant cette ligne

$db['default']['db_debug'] = TRUE;

à

$db['default']['db_debug'] = FALSE;

0 votes

C'est le problème que j'ai rencontré en utilisant la base de données postgresql dans un environnement réel. Merci beaucoup, car je n'avais aucune idée de la nature du problème, étant donné que je suis novice en PHP.

2 votes

Ok, est-ce que quelqu'un peut m'expliquer POURQUOI cela cause des problèmes de connexion ? Je suis tellement frustré, j'ai perdu environ une heure à essayer de comprendre comment mon projet s'est cassé pendant la nuit et cela l'a réparé. Et je n'ai aucune idée du pourquoi.

0 votes

J'essaie toujours de comprendre quel est le problème, car bien que le site soit de nouveau accessible, les données de la base de données ont disparu. Les données sont là, j'ai vérifié mais elles n'apparaissent pas sur le site.

32voto

ken Points 176

Pour moi, le problème se trouvait dans le fichier php.ini. La propriété mysql.default_socket pointait vers un fichier dans un répertoire inexistant. La propriété pointait vers /var/mysql/mysql.sock mais dans OSX, le fichier était situé dans /tmp/mysql.sock .

Une fois que j'ai mis à jour l'entrée dans le php.ini et redémarré le serveur Web, le problème a été résolu.

0 votes

Cela a fait l'affaire pour moi, sauf que les valeurs étaient inversées ! Mon php.ini pointait vers '/tmp' mais aurait dû être '/var/mysql/mysql.sock'... Je suis également sous OSX (pour référence)

3 votes

Veuillez noter qu'il existe deux paramètres pour cela : mysql.default_socket et pdo_mysql.default_socket .

1 votes

Oui ! Merci Ken. Je vois des emplacements d'arbre, pas le temps de vérifier pour quoi faire. pdo_mysql.default_socket=/tmp/mysql.sock mysql.default_socket =/tmp/mysql.sock mysqli.default_socket =/tmp/mysql.sock

31voto

kamal Points 131

J'ai résolu le problème en changeant

$db['default']['pconnect'] = TRUE; À $db['default']['pconnect'] = FALSE;

sur /application/config/database.php

0 votes

Mee à :) et un UP VOTE pour vous .

0 votes

Ouaip. C'est ce qui a marché pour moi. pconnect - TRUE/FALSE (boolean) - Whether to use a persistent connection.

0 votes

Merci, cela a résolu mon problème sur OSX El Capitan MAMP

21voto

Bhumi Singhal Points 1091

SET $db['default']['db_debug'] à FALSE au lieu de TRUE .

$db['default']['db_debug'] = FALSE;

0 votes

Cela a fonctionné ! Une explication à cela ?

0 votes

Cela a fonctionné pour l'erreur précédente, mais cette erreur apparaît maintenant ** A PHP Error was encountered Severity : 8192 Message : mysql_escape_string() : Cette fonction est obsolète ; utilisez plutôt mysql_real_escape_string(). Nom du fichier : mysqli/mysqli_driver.php Numéro de ligne : 319**

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X