Schrift
[thread]3470[/thread]

datenbank anlegen? mysql..: also irgendwie mag mich dbi nicht?



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
deepblack
 2004-06-15 16:41
#32289 #32289
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
hi leute, also als erstes mal:
ich bin der neue ;)
programmier jetzt ca. 2 wochen mit perl, ja ich weiß is noch net viel *g* aber das ja egal.
zum problem: ich will ne datenbank anlegen mit:
Code: (dl )
1
2
3
4
5
6
sub create_database {
my $dbname = $Config{'mysql.database_name'};
eval {
$dbh->do("CREATE DATABASE \"$dbname\"")
}; print $@ "\n" if $@;
}

das gibt aber folgende fehlermeldung:
Can't use string ("Can't call method "do" without a") as a symbol ref while "strict refs" in use at pmba.pl line 51, <STDIN> line 1.

nu frag ich mich was a) das " da soll und wieso symbol ref (referenz?) und b) wieso kommt der auf n stdin? es gibt zwar eins aber das hat mit der sub nicht wirklich was zu tun.. hoffentlich könnt ihr mir da helfen, ich hab das $dbname einfach ma in "" gesetzt aber das wars nicht. achja das ganze is mysql..
mfg deep
We have joy, we have fun, we have a root shell on a SUN!
Heromaster
 2004-06-15 19:46
#32290 #32290
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Probiers mal damit:
Du brauchst bei MySQL keine Anführungszeichen Anführungszeichen verwenden, wenn Du eine DB erzeugen willst und zweitens fehlt hinter dem Aufruf im eval-Block das Semikolon.
Code: (dl )
1
2
3
4
5
6
sub create_database {
my $dbname = $Config{'mysql.database_name'};
eval {
$dbh->do("CREATE DATABASE $dbname;");
}; print $@ "\n" if $@;
}

edit: Es geht auch ohne eval:
Code: (dl )
1
2
3
4
sub create_database {
my $dbname = $Config{'mysql.database_name'};
$dbh->do("CREATE DATABASE $dbname;") or die $dbh->errstr();
}
\n\n

<!--EDIT|Heromaster|1087314666-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
format_c
 2004-06-16 11:04
#32291 #32291
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@deepblack: Das verstehe ich nicht.
Der Datenbankname soll mysql.database_name sein?
Aber mysql ist die Datenbank. Alles was sich hinter dem Punkt verbirgt sind Tabellen.
Du solltest eigentlich auch tunlichst vermeiden in der Datenbank mysql wild Tabellen oder sonstiges zu erstellen. Diese Datenbank ist dazu da den MySQL-Server zu konfigurieren.
Wenn du eine Datenbank namens test_db erstellen möchtest dann mit dem SQL-Statement
[sql]CREATE DATABASE IF NOT EXSISTS test_db[/sql]

Gruß Alex
deepblack
 2004-06-16 11:59
#32292 #32292
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
nein mysql.database_name ist nicht der name sondern die entsprechende stelle in der config file, und ich werd n teufel tun und in der db mysql ne tabelle zu erstellen, nene dafür hab ich test *g*
naja jedenfalls hab ich das nu hinbekommen, wieso es net ging weiß ich net, auch net so schlimm, ich danke euch ;)

mfg deep
We have joy, we have fun, we have a root shell on a SUN!
format_c
 2004-06-16 14:38
#32293 #32293
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=deepblack,16.06.2004, 09:59]nein mysql.database_name ist nicht der name sondern die entsprechende stelle in der config file,[/quote]
Oh sorry. Jetzt hab ich es geblickt.
Mich hat wohl die verblüffende Ähnlichkeit des Hash-schlüssels zur MySQL-Server-Struktur (database.table) geblendet.
Vorher waren einfach die " zuviel.
In MySQL verwendet man IMHO Backticks zum quoten.
Das kann man z.B. bei einem DB-Dump sehen.

Gruß Alex\n\n

<!--EDIT|format_c|1087382368-->
Crian
 2004-06-16 14:44
#32294 #32294
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
...ich habe mal den Thread umbenannt (datenbanl -> datenbank) ...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
deepblack
 2004-06-16 14:50
#32295 #32295
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
format_c: jap die nutzt man da, aber ich weiß net ob man sie braucht oder ob das nur der übersichtlichkeit dient. ich hab eh so meine probleme mit DBI..

crian: danke, ich habs gar net gesehen das ich n l geschrieben hab. passiert halt mal ;)
We have joy, we have fun, we have a root shell on a SUN!
Crian
 2004-06-18 04:31
#32296 #32296
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
... null Problemo ;) ...

Was hast Du denn für Probleme mit DBI?\n\n

<!--EDIT|Crian|1087518695-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
deepblack
 2004-06-18 10:51
#32297 #32297
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
oh es ging um die daten die ich aus der db hole, bin da erst net mit zurecht gekommen, fetchrow_hashref() etc. inzwischen hab ich das aber auch hinbekommen. bin irgendwie net so ganz mi dem hash klar gekommen.. sowies aussieht muss ich bei nem INSERT INTO auf die richtige interpunktation achten, sprich `` und ''.
We have joy, we have fun, we have a root shell on a SUN!
renee
 2004-06-18 11:07
#32298 #32298
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Normalerweise braucht man Tabellennamen und Spaltennamen nicht in `` zu schreiben.
'' sind bei nicht Zahlen-Spalten notwendig, weil es sonst als Spaltenname der Tabelle interpretiert wird (die es aber zu 99% nicht gibt!).
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2004-06-15 16:41.