Connessione a DB su altro server

6 contenuti / 0 new
Ultimo contenuto
Connessione a DB su altro server

Salve a tutti,
con interesse sto studiando drupal per ristrutturare l'applicazione web aziendale scritta anni fa in PHP (on scratch).
Domanda: riesco a connettermi a database esterni mysql (su altro ip) per fare le query che popolano i miei form?
Al momento sto diventando matto per capire la logica delle fapi... ma prima o poi vorrei lavora con dati veri!!!
La domanda in soldoni è:
con db_query scrivo la query che va sul db di drupal ... ma dove metto l'ip del server e le credenziali per accedere a un altro db che e' su un altro IP?

Hai drupal su un server e vuoi usare il database su un altro server, giusto?
Dando per scontato che il server mysql sia configurato in modo da accettare connessioni dall'esterno e che l'utente mysql con il quale ti connetti abbia i permessi per poter fare quello che devi fare, credo basti configurare opportunamente il file settings.php sostituendo "localhost" con il nome o l'ip della macchina mysql.

Pero' non l'ho mai fatto con drupal finora... prova ;-)

Ma in realta' ho il server drupal web col db integrato di drupal su una macchina e vorrei fare delle interrogazioni ad un altro db mysql che non centra nulla col CMS (server DB aziendale).
Si puo'?

Sto guardando una pagina su drupal.org dal titolo "How to connect to multiple databases within Drupal" che sembra la soluzione.
il link e' http://drupal.org/node/18429
Appena ho la conferma mi faccio sentire!!

Benissimo!!! Ecco la soluzione del problema (spero di rispondere a tante altre persone che hanno necessita' di interrogare db esterni):

  • nel file di configurazione settings.php bisogna trasformare la variabile $db_url in un array del tipo
    $db_url['default'] = 'mysqli://drupaluser:drupaluser@localhost/drupal';
    $db_url['altrodbanchesualtramacchina'] = 'mysqli://utente:passwordutente@ip/nomedb';
  • all'interno del proprio modulo si richiama la connessione all'altro db con db_set_active('altrodbanchesualtramacchina'); e si puo' interrogare il db con le funzioni apposite di drupal. Bisogna ricordarsi di risettare alla fine delle operazioni la connessione al default con:
    db_set_active('default'); per non far incavolare il CMS
  • il link di riferimento rimane questo http://drupal.org/node/18429

Navi wrote:
Ma in realta' ho il server drupal web col db integrato di drupal su una macchina e vorrei fare delle interrogazioni ad un altro db mysql che non centra nulla col CMS (server DB aziendale).
Si puo'?

Ah ok avevo capito decisamente male. Bhe sono contenta che tu abbia trovato la soluzione!