web-dev-qa-db-fra.com

CodeIgniter: impossible de se connecter à votre serveur de base de données à l'aide des paramètres fournis Message d'erreur

J'utilise bien CI avec le pilote MySQL. Je souhaite utiliser le pilote MySQL à la place, mais dès que je le modifie (il suffit d’ajouter le «i» à la fin de MySQL et d’ajouter le numéro de port). Le message d’erreur suivant s’affiche:

Une erreur est survenue dans la base de données

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 

mon réglage ressemble à 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'; 

J'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?

Je vous remercie,

48
Onema

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

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

29
ken

Je pense qu'il y a quelque chose qui ne va pas avec PHP la migration. 
Commencez par déboguer 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.

102
Valeh Hajiyev

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

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

à 

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

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

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

dans /application/config/database.php

29
kamal

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

$db['default']['db_debug'] = FALSE;
16
Bhumi Singhal

Si c'est tout ce que vous avez changé, le pilote mysqli n'est peut-être pas installé ou activé dans votre configuration PHP.

Vérifiez sa présence en utilisant phpinfo () ou dans votre fichier php.ini (extension = php_mysqli ....).

3
Craig A Rodway

(CI 3) Pour moi, ce qui fonctionnait était en train de changer:

'hostname' => 'localhost' to 'hostname' => '127.0.0.1'
2
Shina

Problème résolu!

J'avais tout d'abord configuré mon site Web sous XAMMP, puis je devais le transférer sur LAMP, dans une installation SUSE de LAMP, où j'ai eu cette erreur.

Le problème est que ces paramètres du fichier database.php ne doivent pas être initialisés . Laissez juste le nom d'utilisateur et le mot de passe vides .

(Ma première hypothèse, ce serait en raison de l’ancienne version de MySQL, car les installations intégrées sont fournies avec des versions plus anciennes.

1
Helena

Remplacez $db['default']['dbdriver'] = 'mysql' par $db['default']['dbdriver'] = 'mysqli'

0
Bappi Datta

Extension de @Valeh Hajiyev de la bonne réponse claire pour les tests de pilote mysqli:

Déboguez votre connexion à la base de données en utilisant ce script à la fin de ./config/database.php:

/* Your db config here */ 
$db['default'] = array(
  // ...
  'dbdriver'     => 'mysqli',
  // ...
);

/* Connection test: */

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

echo 'Connecting to database: ' .$db['default']['database'];

$mysqli_connection = new MySQLi($db['default']['hostname'],
                                $db['default']['username'],
                                $db['default']['password'], 
                                $db['default']['database']);

if ($mysqli_connection->connect_error) {
   echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
   echo "Connected.";
}
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__);
0
MarcM

Si vous avez utilisé cela pour sécuriser votre serveur: http://www.thonky.com/how-to/prevent-base-64-decode-hack/

Et puis j'ai eu l'erreur: Code Igniter needs mysql_pconnect() in order to run.

Je l'ai compris une fois que j'ai réalisé que tous les sites Web Code Igniter sur le serveur étaient en panne, donc ce n'était pas un problème de connexion localisée.

0
Lawrence