2012-01-20 19 views
12

Quando si tenta di connettersi al mio server di database, ho incontrato il problema della unknown host:Unknown MySQL

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'xxxxxxxxxxxxx:port' in index.php on line 18 

la linea 18 è quella linea dove ho una richiesta per la connessione al server MySQL :

$this->db = new mysqli($db_host, $db_user, $db_psw, $db_name); 

ospito il mio database sulla società di hosting sito web.

+1

Verificare il valore di $ db_host, $ dbuser e altre variabili. – adatapost

+1

che cosa stai passando come host –

+0

Sembra che le tue variabili $ db_host etc siano inizializzate sui loro valori predefiniti, da qualche parte in un file di configurazione. – Salaros

risposta

20

Questo è in genere il caso in cui la risoluzione dei nomi non funziona sull'host. Se la tua destinazione di connessione è sempre la stessa, ti consigliamo di utilizzare il suo indirizzo IP per la connessione.

+0

Controllerò e ti faccio sapere :))) – Malloc

+0

uomo fantastico, hai salvato la mia giornata –

+0

Wow, semplice come questo, può risolvere il problema. Grazie!! – coolcool1994

7

Se si utilizza questo codice:

$Mysqli= new mysqli('mysql2.servidoreswindows.net:3306', 
        'usu', 'pass', 'dbname'); 

si può provare a scrivere host senza porta

Cioè:

$Mysqli= new mysqli('mysql2.servidoreswindows.net', 'usu', 'pass', 'dbname'); 
+0

Stavo usando Zend Db factory e array ('host' => "host: port") non ha mai funzionato, tuttavia array ('host' => "host", 'port' => "porta") funzionava bene perché http : //php.net/manual/en/mysqli.construct.php richiede la porta come argomento separato. – user3338098

2

So che questa è una vecchia questione. Ma oggi mi sono imbattuto in questo stesso problema e nessuna delle risposte che ho trovato è stata quella giusta.

Il problema nel mio caso è che la porta 3306 non è aperta sul firewall e stavo tentando di connettermi a un database mysql interno da un server esterno.

Non sono sicuro del motivo per cui l'errore che viene visualizzato è "Host sconosciuto" in questo caso. Mi sarei aspettato qualcosa di più simile a "Impossibile connettersi". o "Connessione rifiutata.", ma utilizzando lo stesso codice esatto da un server interno ha funzionato bene, portandomi a questa conclusione.

+0

Connessione dal client mysql, in caso di problemi di connessione, verrà segnalata un'eccezione di indirizzo sconosciuto. – samuel

5

Si prega di prestare attenzione con gruppi di protezione AWS:

Nel mio caso posso collegarmi al RDS dal mio computer tiro Telnet e posso collegare due MySQL Workbench anche ma non posso collegarmi da mia istanza EC2 che è all'interno dello stesso VPC di RDS.

La soluzione era:
1. Ho creato un gruppo di sicurezza (exampl1) per RDS e ad esso assegnato.
2. Ho creato un gruppo di sicurezza (exampl2) per EC2 e assegnato ad esso.
e ho assegnato anche il gruppo di sicurezza RDS (exampl1) all'EC2. < < questo mi salva.

Info: Se l'EC2 ha assegnato 2 o più gruppi di sicurezza, quindi nell'origine del gruppo di sicurezza RDS in entrata è necessario creare regole poiché a molti gruppi di sicurezza è assegnato l'EC2.

Amazon docs dice:
L'istanza EC2 nelle quote VPC stesso gruppo di protezione VPC con il DB di istanza. http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

Ho passato tutta la giornata a cercare documenti.
Spero che questo ti aiuti.

0

Assicurarsi di non includere la parte "http: //". Stavo usando http://example.com nel mio file .env. Quando l'ho lasciato come example.com ha funzionato.

Problemi correlati