Come collegare un database secondario a Drupal 7
Salve sono nuovo di Drupal,volevo chiedervi come posso utilizzare le view per interrogare un database mysql locale (cosa banale,ma non ci sono riuscito) :D
praticamente ho creato un nuovo db(chiamato db_barbati) con phpmyadmin, dopodicche ho provato ad inserire su setting.php il nuovo database
(sicuramente è sbagliato ma non so come scriverlo)
ho scritto cosi ma non funziona :si blocca tutto :D
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'bitnami_drupal7',
'username' => 'bn_drupal',
'password' => 'fa18b4f178',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
),
),
);
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'db_barbati',
'username' => 'Udrupal',
'password' => 'prova',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
),
),
);
potreste spiegarmi come fare?
o indicarmi qualche guida,per collegare il database e inviare una query e gestire il risultato?
grazie

Risposte
Se si è nella necessita' di
Se si è nella necessita' di inserire un collegamento al volo da un database esterno, il codice da inserire in un modulo o pagina o blocco è:
//aprire i tag PHP
$other_database = array(
'database' => 'nomeDBesterno',
'username' => 'nome', // assuming this is necessary
'password' => 'password', // assuming this is necessary
'host' => '00.00.00.000', // indirizzo IP del server, o se in locale o sulla stessa macchina, localhost
'driver' => 'mysql', // o altro database driver
);
Database::addConnectionInfo('nomeDBesterno', 'default', $other_database);
db_set_active('nomeDBesterno');
$result = db_query("
SELECT ecc ecc");
foreach ($result as $record) {
//var_dump ($record); //se volete stampare il risultato della query
echo $record->title;echo "
";
ecc ecc eccc
}
db_set_active('default');
drupal_set_message(t('Le query sono state fatte.')); // messaggio-opzionale- che avvisa dell'avvenuta esecuzione della query.
//chiudere il tag PHP
FONDAMENTALE riportare il settaggio al database di default...
Se il DB però è parte integrante del sito, e usato sempre, andrebbe 'tirato su' già nel file di settings, settings.php
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'DBSitoDrupal',
'username' => 'user',
'password' => 'password',
'host' => 'localhost',
);
$databases['default']['slave'][] = array(
'driver' => 'mysql',
'database' => 'DBEsterno',
'username' => 'user',
'password' => 'password',
'host' => 'localhost',
);
Ciao Niubbo75 grazie per la
Ciao Niubbo75 grazie per la risposta ho provato ad inserire il secondo db nel file setting ma non funziona mi da il seguente errore :
Si è verificato un errore inatteso. Riprova più tardi, grazie.
Messaggio di errorePDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db_barbati.node_counter' doesn't exist: SELECT totalcount, daycount, timestamp FROM {node_counter} WHERE nid = :nid; Array ( [:nid] => 15 ) in statistics_get() (linea 320 di C:\xampp\apps\drupal\htdocs\modules\statistics\statistics.module).
ho modificato solo il file setting.php
con il seguente codice :
$databases['default']['default'] = array(
'database' => 'bitnami_drupal7',
'username' => 'bn_drupal',
'password' => 'fa18b4f178',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
);
$databases['default']['slave'][] = array(
'driver' => 'mysql',
'prefix' => '',
'database' => 'db_barbati',
'username' => 'root',
'password' => '',
'host' => 'localhost',
);
dove sbaglio?
che significano default e slave in $databases['default']['slave'][] = array(?
grazie a tutti per l'aiuto
Ciao, il collegamento
Ciao, il collegamento funziona e lo dimostra il fatto che ti riporta un errore legato proprio al secondo database che hai collegato, ovvero che non esiste la tabella alla quale stai facendo riferimento
Usare l'utente root per il database, senza password per giunta, non è una mossa saggia ;-)
"default" significa che è quello "standard", quello che verrebbe utilizzato normalmente, mentre "slave" significa che è il secondario (tradotto letteralmente, slave significa schiavo), se vai a collegare due o più database devi indicare al programma come deve utilizzarli, ricordati che i computer sono le macchine più stupide del mondo, se non gli dici esattamente cosa devono fare, loro non lo fanno ;-D
ciao niubbo75 ,il problema è
ciao niubbo75 ,il problema è che non sto facendo riferimento a nessuna tabella da setting.php ,
ho solo provato ad impostare il collegamento al database secondario, che ho creato appositamente
cosa posso fare ???helpppp
ps so che root non è l'ideale,ma sto facendo solo delle prove in locale :D chiedo perdono !!! :D
ma le sto provando tutte
grazie per la risposta
Domanda, il database
Domanda, il database secondario contiene qualche cosa?
Si una tabella "utenti" con
Si una tabella "utenti" con una decina di utenti che ho messo per prova
La tabella ha i campi: cf nome cognome età
perche? Dovrebbe esserep vuota?
Grazie
Allora fagli leggere quella
Allora fagli leggere quella tabella, il db ora è collegato, sta a te impostare cosa far leggere e/o scrivere da uno o dall'altro.
forse non mi sono spiegato
forse non mi sono spiegato bene,come faccioa usare il db se non mi carica proprio il sito?
questo errore me lo da se provo a connettermi al sito a qualsiasi pagina,praticamente appena provo ad aprire il sito mi esce questo messaggio di errore di drupal e non va piu avanti!
praticamente si blocca tutto!
se tolgo il secondo db da setting,torna a funzionare di nuovo tutto!per ora ho il sito bloccato!!! :(
leggendo in giro forse devo impostare un prefisso? ma non so come!
questo utente ha il mio stesso problema
http://www.drupalitalia.org/node/21724
Prova ad impostare un nome
Prova ad impostare un nome utente con una password al secondo db (che non sia root) e collega il db in quel modo, inizia con un db vuoto per vedere se tutto funziona.
Il "prefisso" non ti serve, quello lo si usa quando non si ha a disposizione un db secondari nel caso si volesse fare più di una installazione Drupal, allora assegni dei prefissi alle varie installazioni e questi prefissi vengono utilizzati nelle tabelle del db, Drupal leggerà solamente quelle con il prefisso indicato in settings.php.
Domanda, una volta collegato, sai come utilizzare questo secondo db? Sicuro che ti serva veramente?
niente.. 1)creato nuovo
niente..
1)creato nuovo utente in phpmyadmin ,di nome vinc
2)creato un nuovo database vuoto vinc
3)dati all utente vinc tutti i privilegi sul database
4)modificato setting.php cosi :
$databases['default']['default'] = array(
'database' => 'bitnami_drupal7',
'username' => 'bn_drupal',
'password' => 'fa18b4f178',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
);
$databases['default']['slave'] []= array(
'database' => 'vinc',
'username' => 'vinc',
'password' => 'ZttHwrpw387s8uPa',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
);
4)stesso risultato ottenuto
Errore
Si è verificato un errore inatteso. Riprova più tardi, grazie.
Messaggio di errorePDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'vinc.node_counter' doesn't exist: SELECT totalcount, daycount, timestamp FROM {node_counter} WHERE nid = :nid; Array ( [:nid] => 15 ) in statistics_get() (linea 320 di C:\xampp\apps\drupal\htdocs\modules\statistics\statistics.module).
Fai una prova, scollega il db
Fai una prova, scollega il db secondario, accedi al sito e disabilita tutti i moduli non strettamente necessari, ricollega il db e vedi se riesci ad avere il sito funzionante, se sì, riabilita i moduli singolarmente e vedi se c'è qualche modulo che crea problemi, se tutto va bene sei a posto, altrimenti leva il db secondario, disabilita il modulo che ti ha creato problemi e disinstallalo (attenzione, NON cancellalo, disinstallalo, in modo da far ripulire il db dei suoi campi), ricollega il db secondario e vai avanti fin quando hai riattivato tutti i moduli, fatto questo inizia ad attivare i moduli che hai disinstallato e vedi se la sola attivazione comporta problemi (io non credo, ma non si sa mai).
Ciao ciao
ciao niubbo75!! Sei un
ciao niubbo75!! Sei un grande!!! dopo due giorni di smanettamenti con la febbre sotto le coperte ci sono riuscito!!
o almeno per ora non mi da errori...
praticamente ho disabilitato tutti i moduli e riabilitati uno per volta...con mia grande sorpresa appena abilito il modulo tracker mi ricompare l'errore,se lo disabilito funziona tutto.
ora come faccio ad usarlo da ide senza creare file php?
cioè ho installato data,schema e view come faccio a fare una query o creare una vista su questo db?
ho provato Struttura->Viste-> Add new view ,do un nome alla vista e poi continue... e fields.... ma la tabella utenti contenuta nel db vinc non è presente dove la trovo?
mi manca qualcos'altro leggevo che serve cck,ma ho drupal 7 non dovrebbe essere gia presente?
in attesa grazie mille
Ciao, per il modulo traker
Ciao, per il modulo traker prova a fare come ti ho suggerito, disinstallalo e poi riabilitalo, dovrebbe creare tabelle e campi tenendo conto anche del database secondario e quindi non darti più errori.
Per utilizzare il db secondario devi fare le query interrogando quel db, siccome non mi è mai capitato di lavorare con 2 o più db collegati non saprei dirti se ci sono dei moduli specifici o se devi fare tutto a manina (penso sarà così, è una condizione inusuale e si da per scontato che chi decida di operare in questo modo conosca almeno le basi e qualche cosa di più), al limite fai una ricerca su drupal.org tra i vari moduli, se esiste qualche cosa la troverai li.
Ti ho modificato il titolo del 3D con uno più utile in caso di ricerche future, scrivere "AIUTO!" "HELPPPP!" o altre cose simili è inutile, se apri un 3D è palese che stai cercando aiuto, meglio inserire correttamente l'argomento della richiesta, in modo che in futuro utenti che dovessero trovarsi nella stessa condizione riescano a trovare facilmente il 3D.
ciao niubbo75 allora forse
ciao niubbo75 allora forse sto sbagliando il modo di procedere,a me non serve avere due database me ne serve uno solo ...sul quale costruire un modello semplice entita-relazione,in cui sono presenti piu tabelle collegate tra loro..ho pensato di aggiungere un secondo db perche ho pensato che il primo bitnami_drupal ,servisse come db interno per far funzionare i moduli di drupal,quindi per paura di fare casini ho pensato di aggiungere un db a parte... sbaglio?
1)posso utilizzare le vieW per creare le tabelle all interno del db principale,senza creare danni(rallentamenti e malfunzionamenti)?
2)con le view è possibile specificare i concetti di chiave primaria,chiave esterna e tutto cio che serve nel modello E-R ?
grazie per l'aiuto :D
Ciao, forse sarebbe meglio se
Ciao, forse sarebbe meglio se tu iniziassi a studiare un po' Drupal, perché se devi solo far relazionare entità, Drupal lo fa tranquillamente di suo...
Togli il db esterno ed aggiungi i moduli che ti servono (su drupal.org cerca entity e tutto quello che troverai annesso).
Quando hai "paura di fare casini" l'operazione da fare è il BACKUP, non cercare un modo per complicarsi l'esistenza ;-)
Per le altre domande che eventualmente avrai, apri altri 3D mettendo dei titoli "utili", questo ormai è risolto, come collegare un db esterno lo hai capito :-D