Perl und MySQL

M

moritz-t

Aktives Mitglied
Thread Starter
Dabei seit
09.07.2003
Beiträge
369
Reaktionspunkte
1
Hallo,
habe mir MAMP installiert. Mit PHP funktioniert der enthaltene MySQL-Server auch problemlos, nur mit Perl macht er zicken. Ich muss wohl noch die DBI und DBD Module installieren. Nur wie mach ich das? Da muss ich bestimmt das Terminal für benutzen, nur leider haabe ich davon keine Ahnung. Kennt jemand vielleicht ein gutes Tutorial, oder kann mir beschreiben, was ich machen muss?

Vielen Dank,
Moritz
 
Guggst Du hier auf meiner alten Homepage.

Die Anleitung ist nicht sehr ausführlich.
Ich hoffe, Du kommst damit klar.
 
danke, die DBI-Installation hat gut geklappt, nur bei DBD macht er Probleme, ich bekomme immer eine Fehlermeldung, wenn ich make test und make install mache. Woran kann das liegen?
So sieht die aus:
make: *** [blib/arch/auto/DBD/mysql/mysql.bundle] Error 1

Moritz
 
Ein paar Zeilen davor steht warum ;)
 
Ich hab das irgendwann vor gut einem Jahr gemacht.
Seitdem läuft es bei mir ohne Probleme.
Ich kann mich aber leider nicht mehr genau erinnern, welche Probleme dabei aufgetreten waren.
 
ok habe hier nochmal die Ausgabe, nachdem ich make aufgerufen habe, vielleicht kann ja jemand was damit anfangen:

Code:
cc -c  -I/Library/Perl/5.8.6/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -Os -arch ppc64 -fno-common -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -Os   -DVERSION=\"3.0006\" -DXS_VERSION=\"3.0006\"  "-I/System/Library/Perl/5.8.6/darwin-thread-multi-2level/CORE"   dbdimp.c
cc -c  -I/Library/Perl/5.8.6/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -Os -arch ppc64 -fno-common -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -Os   -DVERSION=\"3.0006\" -DXS_VERSION=\"3.0006\"  "-I/System/Library/Perl/5.8.6/darwin-thread-multi-2level/CORE"   mysql.c
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.bundle
LD_RUN_PATH="" /usr/bin/perl myld env MACOSX_DEPLOYMENT_TARGET=10.3 cc  -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o  -o blib/arch/auto/DBD/mysql/mysql.bundle   -L/usr/local/mysql/lib -lmysqlclient -lz -lm   
/usr/bin/ld: dbdimp.o bad magic number (not a Mach-O file)
/usr/bin/ld: mysql.o bad magic number (not a Mach-O file)
/usr/bin/ld: truncated or malformed archive: /usr/local/mysql/lib/libmysqlclient.a (ranlib structures in table of contents extends past the end of the table of contents, can't load from it)
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/DBD/mysql/mysql.bundle] Error 1
 
Such mal die beiden Dateien "dbdimp.o" und "mysql.o" und mache im Terminal:
Code:
file /pfad/dbdimp.o
file /pfad/mysql.o
Poste bitte die Ausgabe.
Da sollte kommen:
Code:
.../dbdimp.o: Mach-O object ppc
.../mysql.o: Mach-O object ppc

Wenn Du 'nen Intel Rechner hast, weiss ich nicht, ob es überhaupt geht.
 
ist ein Powermac G5 und es kommt genau die ausgabe, die erscheinen soll, also Mach-O object ppc
Die Dateien sind aber noch nicht installiert, sondern liegen immernoch in dem Ordner, den ich heruntergeladen habe - weiß nicht, ob das so sein soll...
 
Daraus sollten eigentlch die erforderlichen Dateien kompiliert werden.
Keider kann ich Dir auch nicht weiterhelfen.
Ich kann mich nur noch erinnern, dass es damals auch ein Riesen Gefummel war.
 
hab das ganze mal mit cpan versucht, da kommen zwar keine fehlermeldungen, aber Perl verlangt irgendwie immernoch nach dem DBD-Modul, oder interpretiere ich diese Fehlermeldung falsch:
Code:
Software error:

install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5.8.6 /Library/Perl /Network/Library/Perl/5.8.6/darwin-thread-multi-2level /Network/Library/Perl/5.8.6 /Network/Library/Perl /System/Library/Perl/Extras/5.8.6/darwin-thread-multi-2level /System/Library/Perl/Extras/5.8.6 /Library/Perl/5.8.1 .) at (eval 4) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
 at /Applications/MAMP/cgi-bin/mysql.pl line 14
For help, please send mail to the webmaster (you@example.com), giving this error message and the time and date of the error.

Der Quelltext meiner Perl Datei sieht folgendermaßen aus:
Code:
#!/usr/bin/perl -w
#
#
# Compilerpragma strict um keine Fehler zu machen :-)
use strict;
# Benutzung der Perl-Module CGI und DBI
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
# Datenbank-Verbindung aufbauen
my $dbh;
$dbh = DBI->connect( 'DBI:mysql:database = dbi_demo', 'root', 'root') ||
die "Kann keine Verbindung zum MySQL-Server aufbauen: $DBI::errstr\n";

# Datenbank-Verbindung beenden
$dbh->disconnect;
 
JUHUHUHUHUHUHUHUH!:freu: :freu: :freu: :freu: :freu: :freu: :freu:

Ich hab's endlich hinbekommen!
Hab mich nochmal an mein Powerbook gesetzt (auf dem hab ich kein MAMP) und MySQL von Hand installiert und dann per Hand und Terminal nochmal ganz sauber alle Module installiert - und was soll ich sagen: es läuft!
Auf dem Powermac geht es zwar nicht, da dort außer MAMP irgendwie kein anderes MySQL mehr startet, aber so kann ich ja erstaml arbeiten.

Vielen Dank nochmal an alle, die mir versucht haben zu helfen, also vorallem an maceis!

Moritz :D
 
dafür sitz' ich gerade immernoch (seit gestern) an dem mist...

brauche hier fürs company framework einige module, unter anderem DBD::Mysql - aber der kleine mistkerl will sich einfach nicht installieren lassen (weder manuell noch über cspan)... mag an der erkältung liegen aber momentan sitze ich da wie vor ner mauer...

ich poste mal einfach die ausgabe hier rein in der hoffnung jemand kann mir nen tip geben...

ich nehm mal ein paar auszüge wo ich der meinung bin, dass sie relevant sind (man möge mich korrigieren, wenn ich was erweitert ausführen soll...)
Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.

Cannot find the file 'mysql_config'! Your execution PATH doesn't seem
to contain the path to mysql_config. Resorting to guessed values!
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
I will use the following settings for compiling and testing:

cflags (guessed) = -I/usr/local/mysql/include
embedded (guessed) =
libs (guessed) = -L/usr/local/mysql/lib -lmysqlclient -lz -lm -lcrypt -lnsl
mysql_config (guessed) = mysql_config
nocatchstderr (default) = 0
nofoundrows (default) = 0
ssl (guessed) = 0
testdb (default) = test
testhost (default) =
testpassword (default) =
testsocket (default) =
testuser (default) =

Checking if your kit is complete...
Looks good
Note (probably harmless): No library found for -lcrypt
Note (probably harmless): No library found for -lnsl

Warning: duplicate function definition 'do' detected in mysql.xs, line 224
Warning: duplicate function definition 'rows' detected in mysql.xs, line 567

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00base.............install_driver(mysql) failed: Can't load '/Users/JensKoehn/.cpan/build/DBD-mysql-3.0008/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/JensKoehn/.cpan/build/DBD-mysql-3.0008/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Symbol not found: _mysql_stmt_store_result
Referenced from: /Users/JensKoehn/.cpan/build/DBD-mysql-3.0008/blib/arch/auto/DBD/mysql/mysql.bundle
Expected in: dynamic lookup
at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.
Perhaps a required shared library or dll isn't installed where expected
at t/00base.t line 38
t/00base.............dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 4-5
Failed 2/5 tests, 60.00% okay

(es folgen diverse "DIED. FAILED" tests)

Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/00base.t 255 65280 5 4 4-5
t/10dsnlist.t 255 65280 9 18 1-9
t/20createdrop.t 255 65280 5 10 1-5
t/30insertfetch.t 255 65280 11 22 1-11
t/35limit.t 255 65280 113 226 1-113
t/35prepare.t 255 65280 30 60 1-30
t/40bindparam.t 255 65280 28 56 1-28
t/40bindparam2.t 255 65280 13 26 1-13
t/40blobs.t 255 65280 11 22 1-11
t/40listfields.t 255 65280 18 36 1-18
t/40nulls.t 255 65280 11 22 1-11
t/40numrows.t 255 65280 25 50 1-25
t/41bindparam.t 255 65280 11 22 1-11
t/41blobs_prepare.t 255 65280 24 48 1-24
t/42bindparam.t 255 65280 11 22 1-11
t/50chopblanks.t 255 65280 35 70 1-35
t/50commit.t 255 65280 30 60 1-30
t/dbdadmin.t 255 65280 21 42 1-21
t/insertid.t 255 65280 12 24 1-12
t/param_values.t 255 65280 8 16 1-8
t/prepare_noerror.t 255 65280 ?? ?? ??
t/texecute.t 255 65280 9 18 1-9
1 test skipped.
Failed 22/23 test scripts. 437/440 subtests failed.
Files=23, Tests=440, 6 wallclock secs ( 1.30 cusr + 0.30 csys = 1.60 CPU)
Failed 22/23 test programs. 437/440 subtests failed.
make: *** [test_dynamic] Error 255
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
Failed during this command:
CAPTTOFU/DBD-mysql-3.0008.tar.gz : make_test NO

*schaut verzweifelt*
 
GexMax schrieb:
...
unter anderem DBD::Mysql - aber der kleine mistkerl will sich einfach nicht installieren lassen (weder manuell noch über cspan)... mag an der erkältung liegen aber momentan sitze ich da wie vor ner mauer...
...
Nein, das liegt nicht an der Erkältung sondern daran, dass IMHO DBD::Mysql eines der unter Mac OS X am schwierigsten zu installierenden Module ist

Code:
Cannot find the file 'mysql_config'! [b]Your execution PATH doesn't seem 
to contain the path to mysql_config.[/B] Resorting to guessed values!
Das ist doch schon mal eindeutig.
Abhilfe: Erweitern der PATH-Variablen um das Verzeichnis in dem sich das Skript 'mysql_config' befindet. Welches das ist, hängt von Deiner MySQL Installation ab, aber das wirst Du herausfinden. Ob es danach funktioniert, hängt ebenfalls von Deiner MySQL Installation ab. Viele Pakete für Mac OS X enthalten z.B. ein fehlerhaftes mysql_config Skript.
Alternative Möglichkeit: siehe unten.

Das Problem, warum nicht installiert werden kann, liegt darin, dass die im folgenden aufgeführten "guessed values" falsch sind.
Code:
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
I will use the following settings for compiling and testing:

cflags (guessed) = -I/usr/local/mysql/include
embedded (guessed) = 
libs (guessed) = -L/usr/local/mysql/lib -lmysqlclient -lz -lm -lcrypt -lnsl
mysql_config (guessed) = mysql_config
nocatchstderr (default) = 0

Die Alternative wäre also, das Skript 'Makefile.PL' mit den passenden Parametern aufzurufen.
Wie das geht steht in der Installationanleitung, die mit dem Modul geliefert wird.

HTH
 
Hallo, tut mir leid, dass ich das alte Thema nochmal rauskramen muss, aber ich stehe wieder so ziemlich vor dem gleichen Problem, nur dass es diesmal auf einem macBook Pro mit Leopard ist. Also erst wieder MAMP installiert, in der Hoffnung, dass es geht -> Mysql läuft, natürlich keine Verbindung mit Perl, also DBI installiert (ging auch ohne Probleme) bei DBD macht er allerdings wieder Zicken (kann irgendwie mysql_config nicht finden?!). Also MAMP wieder runtergeschmissen und MySQL 5.0.45 als Binary runtergeladen und installiert, es lässt sich allerdings nicht starten - wenn ich es übers Terminal aufrufe, läuft der Server kurz an, dann geht er wieder aus...
Also Probleme über Probleme - gibt es auf dem Bereich schon Erfahrungen mit Leopard?

Moritz
 
Bei mir läuft MySQL mit DBI auf Leopard.

Standardfragen bei Problemen:
Was genau hast Du gemacht?
Was war das genaue Ergebnis?
Genaue Fehlermeldung etc.?
Was steht in den logfiles?
 
Hallo maceis, also DBI hab ich über "sudo perl -MCPAN -e shell" und "install Bundle::DBI" installiert. Einzige Fehlermeldung: er konnte DBI:shell nicht installieren, aber die DBI Shell brauche ich glaube ich auch nicht
DBD hab ich dann mit "install Bundle::DBD::mysql" zu installieren versucht, am Ende bekomme ich dann folgende Fehlermeldung:
Code:
2 tests skipped.
Failed 32/34 test scripts, 5.88% okay. 475/478 subtests failed, 0.63% okay.
make: *** [test_dynamic] Error 255
  /usr/bin/make test -- NOT OK
Running make install
  make test had returned bad status, won't install without force
Bundle summary: The following items in bundle Bundle::DBD::mysql had
installation problems:
  DBD::mysql
Den Rest der Angaben hab ich mal weggelassen...
 
hab jetzt nochmal DBD manuell über den Source von 4.006 installiert und keine Fehlermeldungen erhalten. Wenn ich jetzt MAMP starte und mein Test-Script ausführe:
Code:
#!/usr/bin/perl -w

use strict;
use DBI();
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $DBH;
my $SQL;
my $cursor;

$DBH = DBI->connect('DBI:mysql:Test:localhost','root','root') or die $DBI::errorstr;

print "Content-type: text/html\n\n";
print "<html><body>Hallo Welt</body></html>\n";

$DBH->disconnect;

erhalte ich folgende Fehlermeldung im Browser:
Code:
install_driver(mysql) failed: Can't load '/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib
  Referenced from: /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
  Reason: image not found at /System/Library/Perl/5.8.8/darwin-thread-multi-2level/DynaLoader.pm line 230.
 at (eval 4) line 3
Compilation failed in require at (eval 4) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at /Users/macBookMo/Sites/cgi-bin/test.pl line 12

Ist in meinem Quelltext was nicht in Ordnung?
 
Google sagt was von wegen der mysql_config, die in der PATH Variable richtig gesetzt werden muss, meine mysql_config liegt hier:
Programme/MAMP/Library/bin

Wie ändere ich jetzt die entsprechende PATH-Variable für die mysql_config?
 
Hier steht meine Lösung zu dem Perl-DBD::mysql -Installationsproblem unter MAMP.

Ohne Gewähr! (Intel Macbook mit MAMP 1.4.1).

HTH
 
Zurück
Oben Unten