CodeIgniter: imansible connettersi al server del database utilizzando le impostazioni fornite. Messaggio di errore

Sto usando CI bene usando il driver MySQL. Voglio invece usare il driver mysqli, ma appena lo cambio (basta aggiungere "i" alla fine di mysql e aggiunto il numero di port) ottengo il seguente messaggio di errore

A Database Error Occurred Unable to connect to your database server using the provided settings. Filename: core/Loader.php Line Number: 232 

la mia impostazione assomiglia a questa:

 $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'; 

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

Sto facendo qualcosa di sbagliato?

Grazie,

Per me il problema era nel file php.ini. La properties; mysql.default_socket stava puntando al file in una directory inesistente. La properties; puntava a /var/mysql/mysql.sock ma in OSX, il file si trovava in /tmp/mysql.sock .

Una volta aggiornata la voce in php.ini e riavviato il server web, il problema è stato risolto.

Penso che ci sia qualcosa di sbagliato nella configrazione di PHP.
Innanzitutto, esegui il debug della tua connessione al database usando questo script alla fine di ./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__); 

Quindi vedi qual è il problema.

Oggi sono caduto questo tipo di problema in live server e ho risolto il problema cambiando questa linea

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

a

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

Ho risolto il problema cambiando

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

in /application/config/database.php

SET $db['default']['db_debug'] su FALSE anziché su TRUE.

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

Se è tutto ciò che è stato modificato, è ansible che il driver mysqli non sia installato o abilitato nella configuration di PHP.

Controlla la sua presenza usando phpinfo (), o nel tuo file php.ini (estensione = php_mysqli ….).

Problema risolto!

Avevo installato tutto il mio sito Web in XAMMP, quindi ho dovuto trasferirlo a LAMP, in un'installazione SUSE di LAMP, in cui ho ricevuto questo errore.

Il problema è che questi parametri nel file database.php non dovrebbero essere inizializzati. Basta lasciare username e password vuoti. Questo è solo

(La mia prima ipotesi sarebbe dovuta alla vecchia versione di mysql, poiché le installazioni incorporate vengono fornite con versioni precedenti.

(CI 3) Per me, quello che ha funzionato stava cambiando:

 'hostname' => 'localhost' to 'hostname' => '127.0.0.1' 

Se hai usato questo per proteggere il tuo server: http://www.thonky.com/how-to/prevent-base-64-decode-hack/

E poi ha ottenuto l'errore: Code Igniter needs mysql_pconnect() in order to run .

L'ho capito una volta che ho realizzato che tutti i siti Web di Code Igniter sul server erano interrotti, quindi non si trattava di un problema di connessione localizzata.

Cambia $db['default']['dbdriver'] = 'mysql' a $db['default']['dbdriver'] = 'mysqli'

Ho risolto questo. Nel mio caso ho appena cambiato la mia configuration. 'hostname' è diventato 'localhost'

 $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost';