[Perl/DBI] error bij disconnect

Pagina: 1
Acties:

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-08 17:09
Ik heb het volgende geprogt in Perl:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl -w

use Mysql;
# use strict;

$database = "test";
$wachtwoord = "";
$gebruiker = "test";

$dbh = Mysql->connect($gebruiker, $wachtwoord, $database) or die "Can't connect!!\n";
$dbh->disconnect;

print "Klaar!\n";


Als ik dit uitvoer krijg ik de volgende foutmelding:

DBI->disconnect is not a DBI method. Read the DBI manual. at test.pl line 14

Snap er niks van! Wie kan me helpen?? Heb al gegoogled en ook UTFS!! 8)7

Hail to the king baby!


Verwijderd

Doe wat er staat zou ik zeggen :P Lees de DBI manual ;) Vast wel te vinden op CPAN.

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 29-08 17:09
Verwijderd schreef op 14 oktober 2002 @ 17:19:
Doe wat er staat zou ik zeggen :P Lees de DBI manual ;) Vast wel te vinden op CPAN.
ik heb je advies ter harte genomen en ben nog eens goed gaan zoeken op CPAN waar ik het volgende tegen kwam:

code:
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
 #!/usr/bin/perl
  use strict;
  use DBI();
  # Connect to the database.
  my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost",
                         "joe", "joe's password",
                         {'RaiseError' => 1});
  # Drop table 'foo'. This may fail, if 'foo' doesn't exist.
  # Thus we put an eval around it.
  eval { $dbh->do("DROP TABLE foo") };
  print "Dropping foo failed: $@\n" if $@;
  # Create a new table 'foo'. This must not fail, thus we don't
  # catch errors.
  $dbh->do("CREATE TABLE foo (id INTEGER, name VARCHAR(20))");
  # INSERT some data into 'foo'. We are using $dbh->quote() for
  # quoting the name.
  $dbh->do("INSERT INTO foo VALUES (1, " . $dbh->quote("Tim") . ")");
  # Same thing, but using placeholders
  $dbh->do("INSERT INTO foo VALUES (?, ?)", undef, 2, "Jochen");
  # Now retrieve data from the table.
  my $sth = $dbh->prepare("SELECT * FROM foo");
  $sth->execute();
  while (my $ref = $sth->fetchrow_hashref()) {
    print "Found a row: id = $ref->{'id'}, name = $ref->{'name'}\n";
  }
  $sth->finish();
  # Disconnect from the database.
  $dbh->disconnect();


Dit werkt goed, hier kan ik verder mee, thnx!

Hail to the king baby!


  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

Verduidelijking: Je deed $dbh->disconnect; terwijl je $dbh->disconnect(); moest doen :)

Verwijderd

Precies. Ik had hem ook gezien, want die fout maak ik zelf ook regelmatig =)

  • tomato
  • Registratie: November 1999
  • Niet online
Dat is niet waar, je kunt hier net zo goed $dbh->disconnect; gebruiken, net als bij alle subs.

De oorzaak lag denk ik in de Mysql->connect(), die zo te zien geen object teruggeeft met een diconnect method.
Waarom dat zo is begrijp ik eigenlijk ook niet goed, ik zou verwachten dat Mysql een subclass van DBI is, maar ik heb nog nooit met DBI gewerkt, dus verder zie ik er niet zo veel in.
Pagina: 1