Schrift
[thread]10780[/thread]

Datenbank mit Perl-Script erstellen

Leser: 2


<< >> 6 Einträge, 1 Seite
Hagen
 2007-11-12 12:12
#102250 #102250
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte in meinem Perl-Script prüfen, ob eine Datenbank vorhanden ist und falls nicht, diese ggf. erstellen. Aber irgendwie drehe ich mich im Kreis.

Code (perl): (dl )
1
2
my $driver = "DBI:mysql:$db:$host";
my $dbh = DBI -> connect($driver,$user,$pass) or die "Database connection not made: $DBI::errstr";


In $db müsste ja eigentlich schon die Datenbank die ich nutzten will stehen. Ich kann zwar im folgenden prüfen, ob die Datenbank besteht, aber falls nicht, wie könnte ich sie erstellen?

Code (perl): (dl )
1
2
my $sql = "create database $db ";
my $sth = $dbh->prepare($sql) or die $dbh->errstr(); 


funktioniert icht, da $dbh nicht definiert ist.

Gruß

Hagen
Gruß
Hagen
pq
 2007-11-12 14:38
#102255 #102255
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
du kannst die datenbank einfach weglassen beim connect.
Code (perl): (dl )
my $dbh = DBI->connect("dbi:mysql:host=$host", $user, $pass) ...

anonsten kannst du sie mit database=... angeben, das ist dann eindeutiger.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Hagen
 2007-11-12 15:34
#102262 #102262
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Irgendwie hilft mir das leider immer noch nicht weiter.

Code (perl): (dl )
1
2
3
4
5
6
7
8
my $dbh = DBI->connect("dbi:mysql:host=$host", $user, $pass) or die "Database connection not made: $DBI::errstr";
my $sql = "show tables";
my $sth = $dbh->prepare($sql) or die $dbh->errstr(); 
$sth->execute() or die $dbh->errstr();
        
while (my @row = $sth->fetchrow_array()) {
        print $row[0]."\n";
        };


Ich erhalte immer noch als Fehlermeldung: ... keine Datenbank ausgewählt ...
Gruß
Hagen
nepos
 2007-11-12 15:57
#102265 #102265
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nachdem dein Connect ja schon mal klappt, mittels
Code (perl): (dl )
@databases = $dbh->data_sources();
solltest du die vorhandenen Datenbanken abfragen können, wenn ich die Manpage da richtig lese.
pq
 2007-11-12 16:11
#102271 #102271
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Hagen+2007-11-12 14:34:35--
Irgendwie hilft mir das leider immer noch nicht weiter.

Code (perl): (dl )
1
2
3
4
5
6
7
8
my $dbh = DBI->connect("dbi:mysql:host=$host", $user, $pass) or die "Database connection not made: $DBI::errstr";
my $sql = "show tables";
my $sth = $dbh->prepare($sql) or die $dbh->errstr(); 
$sth->execute() or die $dbh->errstr();
        
while (my @row = $sth->fetchrow_array()) {
        print $row[0]."\n";
        };


Ich erhalte immer noch als Fehlermeldung: ... keine Datenbank ausgewählt ...

na du bist lustig!
erst sagst du, du willst eine datenbank erstellen mit CREATE TABLE, und dafuer brauchst du keine
datenbank anzugeben. dann rate ich dir, die datenbank einfach wegzulassen beim connect, und
was machst du? du fuehrst nun ein SHOW TABLES aus. wenn du nochmal ganz scharf nachdenkst,
ist es ziemlich logisch, dass da *dafuer* eine datenbank brauchst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Hagen
 2007-11-13 10:50
#102326 #102326
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo pq,

danke für deine schnellen Antworten :-) (gilt natürlich auch für nepos)

Habe wohl zum Testen etwas zu viel 'nur' kopiert und dann nicht mehr sorgfältig überprüft :(

Code (perl): (dl )
 my $sql = "show tables";


war falsch, hätte natürlich

Code (perl): (dl )
 my $sql = "show databases";


heissen müssen. Dann klappt es auch. Aber vielen Dank für die Hilfe!
Gruß
Hagen
<< >> 6 Einträge, 1 Seite



View all threads created 2007-11-12 12:12.