Newsgroup: it.comp.lang.perl
Titolo: DBD::mysql - failed: Lost connection to MySQL server

Prima di disturbarvi ho scorso le 45 pagine del gruppo di discussione ma non
ho trovato nulla per poter effettuare ulteriori prove.
La mia esigenza īŋŊ quella di redigere uno script perl che, dal mio client,
acceda ad un data-base Oracle, sul server in cui īŋŊ allocato, per leggere ed
aggiornare tabelle.
Riassumo brevemente quanto fatto per capire se la strada intrapresa īŋŊ corretto
prima ancora di entrare nel merito dellīŋŊerrore in cui incorro.
Tramite ppm ho installato la package in oggetto, ho aggiornato il file
tnsnames.ora del mio client correttamente, infatti, se lancio SQL Plus riesco
a connettermi ed accedere alle tabelle.
Dalla documentazione, in CPAN, ho copiato e adeguato il sottostante scrip di
esempio per ottenere, come primo test, la connessione. Quando eseguo lo
script, dopo un minuto, ottengo questo messaggio errore:
DBI connect('database=DATA_BASE;host=nnn.nnn.nn.nnn:1521','user',...) failed:
Lost connection to MySQL server at 'reading initial communication packet',
system error: 0 at 
oracle_mysql.pl
 line 7
Lo script:
#!/usr/bin/perl -w
use strict;
use DBI();
# Connect to the database.
my $dbh =
DBI->connect("DBI:mysql:database=DATA_BASE;host=nnn.nnn.nn.nnn:1521",
						"user", "pass",
						{'RaiseError' => 1});
# Disconnect from the database.
$dbh->disconnect();
exit; 
Al fine di evitare equivoci, ho modificato i vari riferimenti data_base,
indirizzo ip, user e password.
Ring.
Ringrazio fin da ora per le osservazioni e līŋŊaiuto.
Buon pomeriggio.
Beppe
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

                                                 "user", "pass",
Sembra che tu stia cercando di collegarti a un database Oracle usando il
driver DBI di MySQL.
Max

 system error: 0 at 
oracle_mysql.pl
 line 7
cosi' a caldo direi che cerchi di accedere ad un database mysql (3306) 
usando la porta tipica di oracle (1521).
Forse ho detto una stupidata ma ...
-- 
                      ^   ^
************** (.)_(.) *******************
 Un amico � uno che sa tutto di te e,
 nonostante questo, gli piaci
(E. Hobbard) 

Si, per quel che ho capito, vedendo l'esempio � quello che cerc di fare. Se
lo scrip riuscisse a connetere il db lo implementerei come segue:
$sth = $dbh->prepare("SELECT * FROM $table");
$sth->execute();
che quanto riportata in CPAN DBD::mysql.
E' corretto o devo utilizzare un'altra package ?
Grazie.



Se non indico, nel parametro host, la porta ottengo un'altro errore: 
failed: Unknown database 'DATA_BASE' at 
oracle_mysql.pl
 line 7
Grazie.


 Se non indico, nel parametro host, la porta ottengo un'altro errore:
certo, devi sostituire la porta 1521 con la 3306 almeno che tu non ne usi 
una diversa da quella di default
-- 



Ho provato ad eseguire lo script con la porta 3306 e, come ho scritto prima,
ottengo un'altro errore. Inoltre nel file tnsnames.ora � dichiarata la 1521,
riporto quanto dichiarto nel file
DATA_BASE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = nnn.nnn.nn.nnn)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = sid)
    )
  )
Grazie.


 ha scritto nel messaggio 
news:hbn76d$fd$1...@news.nonsolonews.it...
Ok, scusa. avevo ipotizzato che tu volessi usare mysql e usassi la porta 
oracle. Invece stai usando oracle cercando di usare le direttive mysql.
Le parole DBI:mysql:database indicano allos cript che vuoi usare un db MySQL 
ceh e' un dbms diverso da oracle. Devi caricarti le DBI corrette.



Grazie, ci sono riuscito, ho sostituito 
$dbh = DBI->connect('dbi:mysql:'.....
con
$dbh = DBI->connect('dbi:Oracle:'.....
ero convinto, erroneamente, di dover usare il primo formato preso come esempio
dalla documentazione.
Di nuovo grazie, a tutti, per la disponibilit�.
Beppe
