2016-06-28 23 views
0

Ich versuche mysql mit my.ini-Datei als Konfiguration zu verbinden.Wie mache ich mysql_read_default_group in Perl DBI arbeiten

Hier ist mein Perl-Code:

use DBI; 

my $dsn = "DBI:mysql:umls;mysql_read_default_group=client;"; 

my $dbh = DBI->connect($dsn); 

Und hier ist my.ini Datei:

... 

[client] 

host=localhost 

user=root 

password=mypassword 

database=umls 

port=3306 

.... 

Nach dem offiziellen Dokument (http://search.cpan.org/~capttofu/DBD-mysql-4.033/lib/DBD/mysql.pm), die DBI Informationen benutzt, wird von my.ini, um mysql zu verbinden, jedoch gibt es mir einen Fehler wie: errors

I th Ink das Problem ist der DBI nie my.ini erfolgreich gelesen, so dass es stattdessen ODBC @ localhost als Standard verwenden.

Die Verbindung funktioniert, wenn ich nur den Benutzernamen und das Passwort innerhalb von connect() angeben. Kann mir jemand helfen, herauszufinden, warum 'mysql_read_default_group=client' nicht funktioniert? Ich werde sehr geschätzt! Danke

+0

1) Welches Betriebssystem ist Ihr Skript Perl läuft auf? 2) Wie lautet der vollständige Pfad zu Ihrer my.ini-Datei? 3) Hat der Benutzer, der das Skript ausführt, die Berechtigung, my.ini zu lesen? 4) Können Sie bitte den vollständigen Inhalt von my.ini in Ihre Frage einfügen? – ThisSuitIsBlackNot

+0

Haben Sie versucht, die Datei auch mit '' mysql_read_default_file = ... '' ' –

Antwort

0

Ich lese einige Dokumente, um Ihr Problem zu beantworten und was ich gefunden habe, ist, dass Sie den Benutzernamen und das Passwort in verschiedenen Abschnitt angeben müssen und Sie den Dateinamen auch erwähnen müssen. wie

[myapp] 
host=localhost 

user=root 

password=mypassword 

database=umls 

port=3306 

dann

my $dbh = DBI->connect("DBI:mysql:test" 
    . ";mysql_read_default_file=$ENV{HOME}/.my.cnf" 
    .';mysql_read_default_group=myapp', 
    undef, 
    undef 
    ) or die "something went wrong ($DBI::errstr)"; 

hoffe, dies wird Ihnen helfen.

Referenz: http://www.perlmonks.org/?node_id=519356

+0

zu spezifizieren. Vielen Dank für Ihre Antwort. Aber das funktioniert nicht für mich. Tatsächlich habe ich ein CPAN-Paket namens UMLS: : interface.when Installieren dieses Moduls, solcher Fehler ausgelöst. Ich überprüfte den Paketquellcode und es auf folgende Weise geschrieben: my $ dsn = "DBI: mysql: umls; mysql_read_default_group = client;"; $ db = DBI-> verbinden ($ dsn); –

+0

Also, um dieses Paket zu installieren, muss ich herausfinden, warum diese Zeile des Codes $ dsn = "DBI: mysql: umls; mysql_read_default_group = Client;"; $ db = DBI-> connect ($ dsn); Dosis nicht funktionieren. –