Thread Database Handle zerstört (39 answers)
Opened by Escape at 2010-04-22 17:03

Linuxer
 2010-04-22 21:29
#136377 #136377
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
2010-04-22T15:48:39 Escape
Mach ich immer so - und es funktioniert ja auch.

Das kann man kaum glauben (sei es, dass Du es immer (genau) so machst, bzw. dass es immer schon so funktioniert). Bei mir führt bereits ein einfaches Leerzeichen (\x20) vor der Datenbankangabe zur Fehlermeldung...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /usr/bin/perl
use strict;
use warnings;

use DBI;

my %dbargs = (
    PrintError => 0,
);

# mit Umbruch und Leerzeichen
my $dsn1 = qq|DBI:mysql:
    database=pl_test:
    host=localhost:
    port=3306|;

# mit nur 1 Leerzeichen
(my $dsn2 = $dsn1 ) =~ s/\n[\t ]*/ /mg;

# ohne Umbruch oder Leerzeichen
(my $dsn3 = $dsn1 ) =~ s/\n[\t ]*//mg;


# teste alle Varianten
for my $dsn ( $dsn1, $dsn2, $dsn3 ) {

    print "--8<--\n$dsn\n--8<--\n";

    if ( my $dbh = DBI->connect( $dsn, 'user', '', \%dbargs ) ) {

        if ( $dbh->do( q'SELECT * FROM foo' ) ) {
            print "do executed.\n";
        }
        else {
            warn "do failed: ", $dbh->errstr, "\n";
        }

        $dbh->disconnect;
    }
    else { 
        warn "connect failed: ", DBI->errstr, "\n";
        next;
    }
}

__END__


Resultat:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
:!perl /tmp/t.pl
--8<--
DBI:mysql:
database=pl_test:
host=localhost:
port=3306
--8<--
do failed: No database selected
--8<--
DBI:mysql: database=pl_test: host=localhost: port=3306
--8<--
do failed: No database selected
--8<--
DBI:mysql:database=pl_test:host=localhost:port=3306
--8<--
do executed.


Getestet auf Linux mit Perl 5.8.8; DBI 1.609; DBD::mysql 4.005
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Antworten mit Zitat

View full thread Database Handle zerstört